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

Slo*_*hGR 0 python regex

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

  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
Run Code Online (Sandbox Code Playgroud)

JoE*_*anO 7

我编写了以下内容:([0-9a-fA-F]:?){12}匹配文本中的MAC地址.

这是它应该如何工作:

  • [0-9a-fA-F] 匹配用于表示十六进制数字的字符
  • :? 匹配可选的冒号
  • (...){12} - 然后将所有这些分组并重复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)
Run Code Online (Sandbox Code Playgroud)

结果产生:

[u'00:24:17:b1:cc:cc', u'20:89:86:9a:86:24']
Run Code Online (Sandbox Code Playgroud)


vks*_*vks 6

([0-9a-f]{2}(?::[0-9a-f]{2}){5})
Run Code Online (Sandbox Code Playgroud)

试试这个。看演示。

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)
Run Code Online (Sandbox Code Playgroud)