Исключить слово между двумя другими как регулярное выражение - PullRequest
0 голосов
/ 19 марта 2019

У меня теперь есть шаблон

\ bi \ b [^.!?] {0,10} \ bhate

, который ловит шаблон только в одном предложении (не делится.!?).Но это также улавливает противоположный смысл с «не» между двумя словами.Как исключить такие случаи «не» между двумя словами с максимальным расстоянием 10 между ними.

Теперь ловит: «Я не ненавижу».Хотел бы исключить это и оставить только как «я ненавижу» или «я ненавижу».

1 Ответ

1 голос
/ 19 марта 2019

Вы бы исключили , а не в отрицательном утверждении
с учетом длины НЕ в пределах первых 10 символов.
То есть диапазон составляет 10 - length('not') или {0,7}

\bi\b(?!.{0,7}not)[^.!?]{0,10}\bhate

https://regex101.com/r/vdqBQX/1

 \b i \b                       # 'i'
 (?! .{0,7} not )              # Here, exclude 'not' if within the first 7 characters     
 [^.!?]{0,10} \b               # O - 10 characters within this negated class
 hate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...