2015-01-27 2 views
0

Я хочу, чтобы соответствовать слово флис где НЕ с последующим (либо непосредственно, либо далее) словом снежнымRegex Negate Непоследовательных шаблон

Входные данные:

Mary had a little lamb, its fleece was white as snow balls 

Следующие регулярные выражения не работают так, как они все совпадают, и не должны. Я уверен, что я достиг этого в прошлом, но не могу найти, где.

/(fleece).*(?!snow)/ 
/(fleece)[\w ]+(?!snow)/ 

Для получения дополнительной информации, это регулярное выражение будет частью более крупного регулярного выражения, и будет раздел чередования, так что я не могу просто свести на нет весь регулярное выражения - например,

/something(?!somethingelse)|fleece.*(?!snow)/ 
+0

Какой язык вы используете? –

ответ

3

Вы почти у цели. Поместите .* внутри негативного взгляда. Приведенное ниже выражение будет захватывать строку fleece, только если за ней не следует .*? любой символ нуля или более раз и строка snow.

(fleece)(?!.*?snow) 

ИЛИ

граница Используйте слово \b при необходимости.

\b(fleece)\b(?!.*?\bsnow\b) 

DEMO

+0

, но это 'something (?! Somethingelse)' проверяет следующее. –

+1

Вы можете удалить '?' после этого * * '' (флис) (?!. * снег) ' –

+0

нет,'? 'избежать возврата ... –

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