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+' 实现上述目标,但这很蹩脚。

谢谢,阿米特

4

2 回答 2

3

你可以用re.findall这个。

result = re.findall('\s\d+', x)

print result[1]  # 2958
print result[3]  # 3103
于 2012-07-25T21:49:33.040 回答
0

如果这是一个一般性问题,那么findall是您最好的选择。

如果这是您要尝试做的实际事情,那split将更有意义:

>>> x = 'f 167 2958 335 3103 0'
>>> l = x.split()
>>> l[2]
'2958'
>>> l[4]
'3103'
于 2012-07-25T22:43:29.670 回答