2015-03-27 5 views
3

Например, регулярное выражение, которое соответствует строке, которая не содержит «foo», но содержит «bar». У меня нет роскоши использовать два выражения. Мне нужно сделать это в одном выражении.Regex - строка соответствия NOT, содержащая одну группу, содержит другое

напр .:

"это Foo Баз бар" - не должно совпадать
"это Foo Баз" - должен не совпадать
"это Баз бар" - должен соответствовать

Я в Perl, FWIW

ответ

7

Используйте negative lookahead утверждения в начале для проверки строки не содержит какую-либо foo подстроки.

^(?!.*?foo).*bar.* 

ИЛИ

^(?!.*?\bfoo\b).*\bbar\b.* 

DEMO

+1

удивительным, спасибо. * внутри негативной группы взглядов - это то, чего я отсутствовал. – beasy

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