使用正则表达式python查找所有可能的匹配项

Yon*_*aum 0 regex python-3.x

如何在python中使用正则表达式查找所有可能的匹配,而不仅仅是出现的第一个匹配?

例如 -

import re
text = '1234'
re.findall(r'\d{2}',text)
Run Code Online (Sandbox Code Playgroud)

将返回 -

['12', '34']
Run Code Online (Sandbox Code Playgroud)

但是我想要所有的团体,即-

['12', '23', '34']
Run Code Online (Sandbox Code Playgroud)

谢谢

ctw*_*els 5

正则表达式使用字符,并且不会回退到先前的匹配项。一种解决方法是使用零长度断言(请参见下面的代码)来捕获您想要的内容。我敢肯定,还有一种更Python化的方法可以完成此操作,但是仅使用regex,就可以使用它。

查看正则表达式在这里使用

(?=(\d{2}))
Run Code Online (Sandbox Code Playgroud)

结果在捕获组1中:

  • 12
  • 23
  • 34

说明

  • (?=(\d{2})) 积极的前瞻性,确保符合条件
    • (\d{2}) 将原始表达式捕获到捕获组1中