python中的双前瞻断言

python中的双前瞻断言,python,regex,python-3.x,Python,Regex,Python 3.x,我知道前瞻断言是根据条件匹配的。但突然间,我被这种双重前瞻的断言所震撼 >>> a = compile(r'a(?=b)(?=c)') >>> b = a.findall('abc') >>> b [] 那么它匹配什么。提前谢谢 您正在匹配a,在a之后应该有ab。这种断言是成功的 但是在那之后,您断言a后面的应该是c。该断言失败,因此将不存在匹配项 例如,此示例将成功并匹配a 这不会成功,因为a后面没有c 要断言a后面有bc,您可以使用或在

我知道前瞻断言是根据条件匹配的。但突然间,我被这种双重前瞻的断言所震撼

>>> a = compile(r'a(?=b)(?=c)')
>>> b = a.findall('abc')
>>> b
[]

那么它匹配什么。提前谢谢

您正在匹配
a
,在a之后应该有a
b
。这种断言是成功的

但是在那之后,您断言
a
后面的应该是
c
。该断言失败,因此将不存在匹配项

例如,此示例将成功并匹配
a

这不会成功,因为a后面没有c


要断言a后面有
bc
,您可以使用或在断言中使用断言,正如所指出的那样。

我认为这与任何内容都不匹配,因为您匹配
a
,然后断言后面应该是
b
,然后再次断言它应该是
c
。@第四个鸟是(?=c)它必须跟在“a”后面“a”后面必须同时跟“b”和“c”。这是不可能的,因此它与任何东西都不匹配。我理解对了吗?
编译(r'a(?=b(?=c)))