首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python regex从字符串中提取MAC地址

Python regex从字符串中提取MAC地址
EN

Stack Overflow用户
提问于 2014-11-12 16:31:03
回答 7查看 24.7K关注 0票数 2

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

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

提前感谢!

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

代码语言:javascript
运行
复制
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
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-11-12 16:59:39

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

以下是它的工作原理:

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

您可以在行动这里中看到它。

然后Python代码变成:

代码语言:javascript
运行
复制
import re
p = re.compile(r'(?:[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)

因此产生:

代码语言:javascript
运行
复制
[u'00:24:17:b1:cc:cc', u'20:89:86:9a:86:24']
票数 12
EN

Stack Overflow用户

发布于 2014-11-12 17:14:44

代码语言:javascript
运行
复制
([0-9a-f]{2}(?::[0-9a-f]{2}){5})

尝试this.See演示。

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

代码语言:javascript
运行
复制
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)
票数 9
EN

Stack Overflow用户

发布于 2016-09-03 01:55:30

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

我用这个实时regex测试器对它进行了测试:https://regex101.com/#python,它对每个regex所做的事情都进行了很好的分解。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26891833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档