我知道前瞻断言根据条件匹配。但突然间,我对这种双重前瞻性断言感到震惊。
>>> a = compile(r'a(?=b)(?=c)')
>>> b = a.findall('abc')
>>> b
[]
然后匹配什么。提前致谢!
最佳答案
您正在匹配 a
和 assert a 之后应该有一个 b
。这个断言是成功的。
但在那之后,您断言 a
之后的内容应该是 c
。该断言失败,因此不会有匹配项。
例如a(?=b)
将成功并匹配 a
。
这个a(?=c)
不会成功,因为a后面没有c。
要断言 a 后面有 bc
,您可以使用 a(?=bc)
或断言内的断言 a(?=b(?=c))
如@Keyur Potdar指出。
关于python - python 中的双重前瞻断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121583/