如何理解(?=([ef][ef]))

>>> print re.findall("(?=([ef][ef]))","fefe")
['fe', 'ef', 'fe']
>>> print re.findall("([ef][ef])","fefe")
['fe', 'fe']

(?=(ef))是如何匹配的?与(ef)的区别在哪里呢?
谢谢

阅读 3.2k
3 个回答

help(re) 看帮助文档:

(?=...) Matches if ... matches next, but doesn't consume the string.

?= 的意思是不消费字符串,匹配上后,跳过一个字符继续匹配(剩下的字符串:efe)
(...) 则是匹配上后,跳过匹配上了的内容继续匹配(剩下的字符串:fe)

正则的零宽断言

推荐问题
宣传栏