簡體   English   中英

Python正則表達式:提取多個匹配組

[英]Python regular expression: extract multiple matching groups

我想匹配一行文本中的最后N個數字。 我知道我可以使用re.findall來提取所有數字,然后算回N,但是我很想知道是否可以使用re.match提取N個組。 我有這個:

line = 'humpty dumpty 25 1, 2, 3, 4, 5, 6'
N = 6
p = re.compile('^(.+)(\D+\d+){{{0}}}$'.format(N))
m = re.match(p, line)

我得到火柴。 但是我想訪問1、2、3、4、5、6中的每一個,但是我得到的只是:

>>> m = re.match(p, line)
>>> m.group(0)
'humpty dumpty 25 1, 2, 3, 4, 5, 6'
>>> m.group(1)
'humpty dumpty 25'
>>> m.group(2)
', 6'
>>> m.group(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group

我想為每個數字看到一個組。 re.match可以按我嘗試的方式使用嗎?

謝謝。

您的問題是,如果重復執行組,則只會捕獲該組的最后一個實例。 您必須為每個所需的捕獲設置不同的組。 下面的這一行有效:

p = re.compile('^(.+)' + '(\D+\d+)'*N + '$')

例:

>>> m = re.match(p, line)
>>> m.groups()
('humpty dumpty 25', ' 1', ', 2', ', 3', ', 4', ', 5', ', 6')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM