是否有能力使前瞻断言不被捕获?像bar(?:!foo)
和bar(?!:foo)
之类的东西不起作用(Python)。
答案 0 :(得分:3)
如果你做bar(?=ber)
在“barber”上,“bar”匹配,但“ber”未被捕获。
答案 1 :(得分: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