Python正则表达式重复组匹配

3
可能重复:
Python正则表达式 - 如何从通配符表达式中捕获多个组? 我无法访问以下正则表达式中第3个或第5个元素的组:
>>> x = 'f 167 2958 335 3103 0'
>>> re.search('.(\s\d+){5}', x).group()
'f 167 2958 335 3103 0'
>>> re.search('.(\s\d+){5}', x).group(1)
' 0'
>>> # how do i access no 2958 and 3103

我知道我可以使用 pattern = '.\s\d+\s(\d+)\s\d+\s(\d+)\s\d+' 来实现上述目标,但那太过平庸。
谢谢, Amit
2个回答

3
你可以使用 re.findall 来实现此功能。
result = re.findall('\s\d+', x)

print result[1]  # 2958
print result[3]  # 3103

0
如果这是一个一般性问题,那么findall是你最好的选择。
如果这是你真正想要做的事情,那么split更有意义:
>>> x = 'f 167 2958 335 3103 0'
>>> l = x.split()
>>> l[2]
'2958'
>>> l[4]
'3103'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接