匹配捕获组一次或多次的正则表达式
我正在尝试在一个字符串中找到成对的数字,并把它们分组捕获,但我似乎只能捕获到最后一组。
Regex:
(\d\d){1,3}
输入字符串:123456 789101
匹配 1: 123456
组 1: 56
匹配 2: 789101
组 1: 01
我想要的是像这样捕获所有的组:
匹配 1: 123456
组 1: 12
组 2: 34
组 3: 56
* 更新
看起来 Python 不允许你捕获多个组,比如在 .NET 中你可以一次性捕获所有组,因此 re.findall('\d\d', '123456') 就能完成这个任务。
4 个回答
2
试试这个:
import re
re.findall(r'\d\d','123456')
2
(\d{2})+(\d)?
我不太清楚Python是怎么处理匹配的,但我会这样做。
6
你不能仅仅通过一个正则表达式来做到这一点。这是一种特殊的计数情况,而单靠正则表达式是无法实现的。比如,使用\d\d会得到:
组1: 12
组2: 23
组3: 34
……
在Python的正则表达式库中,有一个不重叠的功能叫做re.findall(),可以解决这个问题。就像这样:
re.findall('\d\d', '123456')
它会返回 ['12', '34', '56']