python递归正则表达式

时间:2014-07-24 22:25:54

标签: python regex recursion

我有一条消息

msg = 'untagged ethernet 1 ethernet 2 ethernet 3'

我想写一个正则表达式,它会找到'et​​hernet x'模式,这样如果我运行

m = re.match(str(regex),msg) 
print m.groups()

它将保存变量x并显示类似

的内容
(1,2,3)

我试过的表达是

regex = 'untagged ((?: ethernet (\S+))*)'

但我正在

('ethernet 1', 'ethernet 1', '1')\
结果

1 个答案:

答案 0 :(得分:4)

您应该使用re.findall代替re.match

>>> import re
>>> msg = 'untagged ethernet 1 ethernet 2 ethernet 3'
>>> re.findall("ethernet\s\d+", msg)
['ethernet 1', 'ethernet 2', 'ethernet 3']
>>> re.findall("ethernet\s(\d+)", msg)  # Just the numbers
['1', '2', '3']
>>> tuple(map(int, re.findall("ethernet\s(\d+)", msg)))  # What was in your post
(1, 2, 3)
>>>

re.findall被明确设计用于查找字符串中所有出现的模式。