单个正则表达式的多个组匹配

ayv*_*ngo 5 python regex

我正在使用python解析日志,需要从中快速获取一些值

这是简单的等效正则表达式和用法示例

pat = re.compile("(1(2[3456]+2)+1)*")
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作,只有pat.match()返回最后一个匹配组.groups()

这类问题最简单的解决方案是什么?

更新(因为维基引擎说使用编辑而不是创建新帖子):

当然,我需要重复比赛.

to_match="1232112542254211232112322421"
Run Code Online (Sandbox Code Playgroud)

正则表达式需要递归地应用两次.我能忍受,但有什么选择吗?

ste*_*ema 1

好的,试试这个(但只有在你学会如何接受答案之后;-))

s = "123321124421125521"
pat = re.compile("(1(2[3456]+2)+1)")
print pat.findall(s)
Run Code Online (Sandbox Code Playgroud)

删除量词并使用findall(). 这将产生以下列表:

[('123321', '2332'), ('124421', '2442'), ('125521', '2552')]