我知道,前瞻断言基于条件匹配。但是突然之间,我被这个双重的前瞻性断言震惊了。
>>> a = compile(r'a(?=b)(?=c)')
>>> b = a.findall('abc')
>>> b
[]
然后匹配它。预先感谢!
答案 0 :(得分:4)
您要匹配a
和assert,因为a之后应该有一个b
。断言成功。
但是在那之后,您断言a
之后应该是c
。该断言失败,因此将没有匹配项。
例如a(?=b)
将成功并匹配a
。
此a(?=c)
将不会成功,因为a后面没有c。
要断言a之后有bc
,可以使用a(?=bc)
或a(?=b(?=c))
指出的断言@Keyur Potdar中的断言。