Python中的双前瞻断言

时间:2018-07-01 08:20:03

标签: python regex python-3.x

我知道,前瞻断言基于条件匹配。但是突然之间,我被这个双重的前瞻性断言震惊了。

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

然后匹配它。预先感谢!

1 个答案:

答案 0 :(得分:4)

您要匹配aassert,因为a之后应该有一个b。断言成功。

但是在那之后,您断言a之后应该是c。该断言失败,因此将没有匹配项。

例如a(?=b)将成功并匹配a

a(?=c)将不会成功,因为a后面没有c。

要断言a之后有bc,可以使用a(?=bc)a(?=b(?=c))指出的断言@Keyur Potdar中的断言。