Python正则表达式负匹配“(?!...)”如何工作?

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

l787922411 回答:Python正则表达式负匹配“(?!...)”如何工作?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3077103.html

大家都在问