Есть ли возможность сделать запрос на просмотр не захватывающим? Такие вещи, как bar(?:!foo)
и bar(?!:foo)
не работают (Python).Регулярное выражение не захватывает lookahead утверждение
4
A
ответ
2
Если вы делаете bar(?=ber)
на «парикмахерской», «бар» соответствует, но «бер» не фиксируется.
1
Вы не ответили на вопрос Алана, но я буду считать, что он прав, и вас интересует отрицательное утверждение. IOW - соответствует «bar», но не «barfoo». В этом случае вы можете создать свое регулярное выражение следующим образом:
myregex = re.compile('bar(?!foo)')
for example, from the python console:
>>> import re
>>> myregex = re.compile('bar(?!foo)')
>>> m = myregex.search('barfoo')
>>> print m.group(0) <=== Error here because match failed
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> m = myregex.search('bar')
>>> print m.group(0) <==== SUCCESS!
bar
Lookaheads * * не захватываются. Возможно, вы ищете * негативный * lookahead? Это просто '(?! Foo)'. [Ссылка] (http://www.regular-expressions.info/lookaround.html) –