Python Regex: не совпадает, если содержит некоторую строку - PullRequest
0 голосов
/ 10 февраля 2020

Я использую python регулярное выражение для этих двух строк:

t1 = 'foo 36 months bar'

t2 = 'bar Not suitable for children under 36 months foo'

Я хочу сопоставить '36 месяцев 'на t1 и не соответствует t2, так как имеет значение «Не подходит для детей младше» до 36 месяцев.

После поиска у меня есть это:

regex = re.compile(r'((?!Not suitable for children under) 36 month)')

Но это соответствует обоим. Как адаптировать это, чтобы оно не совпадало со строкой «Не подходит для детей младше» до «36 месяцев»?

большое спасибо

1 Ответ

1 голос
/ 10 февраля 2020

То, что вы делаете, это отрицательный взгляд впереди .
Однако вы пытаетесь найти, когда какой-то текст существует до того, что вы хотите сопоставить.
Вместо этого используйте негативный взгляд позади :

re.search('(?<!Not suitable for children under) 36 months',t1) 

Демонстрация:

In [13]: re.search('(?<!Not suitable for children under) 36 months',t1)                             
Out[13]: <re.Match object; span=(3, 13), match=' 36 months'>

In [14]: re.search('(?<!Not suitable for children under) 36 months',t2)                             

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...