我正在尝试对(?!...)使用否定匹配,但无法理解其行为。 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”?