如何在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)
谢谢
正则表达式使用字符,并且不会回退到先前的匹配项。一种解决方法是使用零长度断言(请参见下面的代码)来捕获您想要的内容。我敢肯定,还有一种更Python化的方法可以完成此操作,但是仅使用regex,就可以使用它。
(?=(\d{2}))
Run Code Online (Sandbox Code Playgroud)
结果在捕获组1中:
122334(?=(\d{2})) 积极的前瞻性,确保符合条件
(\d{2}) 将原始表达式捕获到捕获组1中