如何理解(?=([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)

正则的零宽断言

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏