2013-03-07 2 views
3

Я пытаюсь написать шаблон регулярного выражения для поиска строки, которая не находится внутри кавычек. например;Не в регулярном выражении

where value = '~foo'; //no match 

where value = ~foo; //match 

Я могу найти до тех пор, пока не найду прямую строку;

^(? :(?! ~).) *

, но это не очень помогло мне. Если я могу определить буквенную строку «не в», которая может решить мою проблему.

ответ

3

Вы можете использовать lookarounds как этот

(?<!')yourWordGoesHere(?!') 
+1

не должно ли это быть отрицательным? (? VladL

+0

@ dan1111 Влад oops..thx, чтобы указать его – Anirudha

1

Это, кажется, работает:

~foo(?!(.(?<!'))*?') 

Результат:

Not in quotes

+0

Это просто проверяет, есть ли цитата в конце. –

+0

@TimRogers, в каких случаях это не сработает? Кажется, мне очень нравится работать. –

+0

Он будет соответствовать '~ foo'', но не' '~ foo'. Зависит, если это приемлемо или нет. –