我正在尝试对(?!...)使用否定匹配,但无法理解其行为。 python的文档中也没有明确的解释。
例如,我要匹配不跟在“ a”之后的“ bc”(即:“ bc”,“ dbc”,而不是“ abc”)。 我试图写一些代码:
# this doesn't work
>>> re.search('(?!a)bc', 'abc')
<_sre.SRE_Match object; span=(1, 3), match='bc'>
# this works
>>> re.search('bc(?!a)', 'bca')
None
>>> re.search('bc(?!a)', 'bcd')
<_sre.SRE_Match object; span=(0, 2), match='bc'>
# this makes no sense
>>> re.search('(?!a)abc', 'dabc')
None
我很困惑'(?!a)bc'
无效,但是'bc(?!a)'
正常工作。谁能解释该否定匹配的处理方式?我应该如何匹配不跟在“ a”之后的“ bc”?