我怎样才能在python中使用正则表达式找到所有可能的匹配,而不仅仅是出现的第一个匹配?
例如 -
import re
text = '1234'
re.findall(r'\d{2}',text)
将返回 -
['12', '34']
但是我想要所有的小组,即 -
['12', '23', '34']
由于
答案 0 :(得分:4)
正则表达式消耗字符,不会回溯先前的匹配。解决这个问题的方法是使用零长度断言(请参阅下面的代码)来捕获您想要的内容。我确信有更多的pythonic方式来实现这一点,但单独使用正则表达式,你可以使用它。
(?=(\d{2}))
结果在捕获组1中:
12
23
34
(?=(\d{2}))
确定后续匹配的正向前瞻
(\d{2})
将原始表达式捕获到捕获组1