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 に答える