我有一个消息是
msg = 'untagged ethernet 1 ethernet 2 ethernet 3'并且我想编写一个正则表达式,它将找到“以太网x”模式,这样如果我运行
m = re.match(str(regex),msg)
print m.groups()它将保存变量x并显示如下内容
(1,2,3)我尝试的表达式是
regex = 'untagged ((?: ethernet (\S+))*)'但我得到了
('ethernet 1', 'ethernet 1', '1')\结果
发布于 2014-07-25 06:27:17
您应该使用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被明确地设计用于查找字符串中模式的所有匹配项。
https://stackoverflow.com/questions/24945046
复制相似问题