Regex игнорировать все между 2 словами - PullRequest
0 голосов
/ 09 октября 2009

У меня есть несколько строк для проверки по шаблону Regex. Вот регулярное выражение:

apple(?!( ?not)).*?inc(\.|luded)?

строка 1: «банан, гнилое яблоко не входит» - не дает мне совпадения, чего я хочу.

строка 2: «банан, в том числе гнилое яблоко» - создает совпадение, которое я и хочу

Но если у меня есть строка вроде ...

"банан, гнилое яблоко, спелый авокадо не включен" или «банан, гнилое яблоко и абрикос не включены» - и то, и другое мне не подходит.

Итак, в общем, я хочу посмотреть, есть ли в строке «apple» и «include» (или «inc» или «inc.»), А NO «not» перед «включенным» и игнорировать все остальное между ними.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

Как насчет:

apple.*(?<!\snot)\s+inc(\.|luded)
1 голос
/ 09 октября 2009

Вы используете отрицательное утверждение о том, что «not» не появляется сразу после «apple». Но, если я вас правильно понимаю, вам нужно проверить, что «inc» не сразу предшествует «not». Вы можете использовать отрицательное утверждение, например, следующее:

apple.*(?<!(\bnot ))inc(\.|luded)?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...