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

时间:2019-11-19 00:08:06

标签: python regex regex-negation

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

0 个答案:

没有答案