Python正则表达式从字符串中提取MAC地址

2024-09-22 20:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助编写正则表达式,使用pythonre引擎:

  1. 从文本文件中提取所有MAC地址
  2. 提取以下格式的所有字符串:foo bar ... MAC:ADDRESS ... baz bat \r\n

提前谢谢!

我尝试了以下方法来提取MAC地址,但没有成功:

import re
p = re.compile(ur'((?:(\d{1,2}|[a-fA-F]{1,2}){2})(?::|-*)){6}')
test_str = u"TEXT WITH SOME MAC ADDRESSES 00:24:17:b1:cc:cc TEXT CONTINUES WITH SOME MORE TEXT 20:89:86:9a:86:24"

found = re.findall(p, test_str)
for a in found:
    print a

Tags: 字符串texttest引擎remac地址格式
3条回答

我炮制了以下代码:([0-9a-fA-F]:?){12}以匹配文本中的MAC地址。

它的工作原理如下:

  • [0-9a-fA-F]匹配用于表示十六进制数的字符
  • :?匹配一个可选冒号
  • (...){12}-所有这些都被分组并重复12次。因为MAC地址由6对十六进制数组成,中间用冒号隔开

你可以在行动中看到它。

然后,Python代码变成:

import re
p = re.compile(ur'(?:[0-9a-fA-F]:?){12}')
test_str = u"TEXT WITH SOME MAC ADDRESSES 00:24:17:b1:cc:cc TEXT CONTINUES WITH SOME MORE TEXT 20:89:86:9a:86:24"

re.findall(p, test_str)

因此产生:

[u'00:24:17:b1:cc:cc', u'20:89:86:9a:86:24']
([0-9a-f]{2}(?::[0-9a-f]{2}){5})

试试这个。看演示。

http://regex101.com/r/kP8uF5/5

import re
p = re.compile(ur'([0-9a-f]{2}(?::[0-9a-f]{2}){5})', re.IGNORECASE)
test_str = u"TEXT WITH SOME MAC ADDRESSES 00:24:17:b1:cc:cc TEXT CONTINUES WITH SOME MORE TEXT 20:89:86:9a:86:24"

re.findall(p, test_str)

我也必须匹配MAC地址,这很有效:((?:[\da-fA-F]{2}[:\-]){5}[\da-fA-F]{2})

我用这个实时regex测试仪测试了它:https://regex101.com/#python 它对每一块regex做了很好的分解。

相关问题 更多 >