使用regex python查找所有可能的匹配

时间:2018-01-16 16:41:56

标签: regex python-3.x

我怎样才能在python中使用正则表达式找到所有可能的匹配,而不仅仅是出现的第一个匹配?

例如 -

import re
text = '1234'
re.findall(r'\d{2}',text)

将返回 -

['12', '34']

但是我想要所有的小组,即 -

['12', '23', '34']

由于

1 个答案:

答案 0 :(得分:4)

正则表达式消耗字符,不会回溯先前的匹配。解决这个问题的方法是使用零长度断言(请参阅下面的代码)来捕获您想要的内容。我确信有更多的pythonic方式来实现这一点,但单独使用正则表达式,你可以使用它。

代码

See regex in use here

(?=(\d{2}))

结果在捕获组1中:

  • 12
  • 23
  • 34

说明

  • (?=(\d{2}))确定后续匹配的正向前瞻
    • (\d{2})将原始表达式捕获到捕获组1