请考虑以下代码段:
import re
m = re.match(r'(\d-\w){2,3}', r'1-a2-b')
m.group(0), m.group(1), m.groups()
('1-a2-b', '2-b', ('2-b',))
所以m.group(0)按预期返回整个匹配,但为什么m.group(1)只返回第二次重复'2-b'?第一次重复'1-a'在哪里?
谢谢!
答案 0 :(得分:2)
因为您仅为重复数量词{2,3}
(贪婪)之前存在的令牌提供了捕获组,而后者又捕获了最后一个匹配项。因此,还包括捕获组内的重复量化器或范围量化器,并使先前的捕获组成为非捕获组,否则它将产生两个组。试试这个,
((?:\d-\w){2,3})
这与(.)+
和(.+)