2016-06-07 2 views
0
/(^|[^\\])"/g 

С приведенным выше JavaScript регулярным выражением он должен соответствовать только «если нет». Это отлично работает, но он выбирает один символ слишком много.Регулярное - неправильный выбор дополнительного символа

Так что, если у меня есть строка «B, то выбора», но следует выбрать только B «

Если у меня есть \». - это что-то (что правильно), не выбирая.

Но если у меня есть «B», он должен выбирать только ».

+0

Я заменяю это на/"если он соответствует. – Dawid

+0

' [^ \\] 'будет захватывать 1 символ – vks

+0

что вы пытаетесь достичь? –

ответ

1
(^|[^\\])" 

Вы можете использовать эту функцию и заменить $1/" .because Javascript не имеет просмотра назад, вам придется заменить $1 все, что захвачено до того " .Это один символ будучи захвачен [^\\]

See demo

var re = /(^|[^\\])"/g; 
var str = 'A\"B\nA"B,\n'; 
var subst = '$1/"'; 

var result = str.replace(re, subst); 
+1

работает! Спасибо! – Dawid

1

([^\\]) захватывает один символ, который не является обратным слэшем.

Вы могли бы просто сделать эту группу не-захвата группы:

/(?:^|[^\\])"/g 

И тогда вы могли бы заключить кавычку в группе:

/(?:^|[^\\])(")/g 

Теперь ваш " заканчивается в группе матча 1.

Смежные вопросы