我正在尝试首先检查字符串是否确认MAC地址的格式,如果确实如此,我想从字符串中提取所有字节值。

到目前为止,我已经编写了此文件,并且它成功匹配了mac地址的格式是否正确:

 mac_regx = re.compile(r'^([0-9A-F]{1,2})(\:[0-9A-F]{1,2}){5}$', re.IGNORECASE)

但是,当我使用此正则表达式提取字节值时,我只会得到第一个和最后一个:
(Pdb) print(mac_regx.findall('aa:bb:cc:dd:ee:ff'))
[('aa', ':ff')]

我知道我可以简单地通过split来实现:,这样就可以完成工作。我只是希望能够用一个正则表达式在一个步骤中完成匹配和值提取。

最佳答案

如果想要所有匹配项,则应避免使用{5}:

mac_regx = re.compile(r'^([0-9A-F]{1,2})\:([0-9A-F]{1,2})\:([0-9A-F]{1,2})\:([0-9A-F]{1,2})\:([0-9A-F]{1,2})\:([0-9A-F]{1,2})$', re.IGNORECASE)

或更短一点
mac_regx = re.compile(r'^([0-9A-F]{1,2})' + '\:([0-9A-F]{1,2})'*5 + '$', re.IGNORECASE)

您还可以列出字符串'[0-9A-F]{1,2})'的6次出现,并将它们与'\:'结合在一起。

关于python - 正则表达式以匹配MAC地址并提取其值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18782926/

10-10 23:57