Regex matching MAC address

假如想象 提交于 2019-12-11 09:03:40

问题


I'm trying to get all valid MAC addresses from this string:

00:1e:68:51:4f:a9    <-> 00:1a:8c:10:ad:30          9       540       8       336      17       876    90.457130000       198.0143

I've tried this and a few other regexes:

^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$

Regex 101 here:

https://regex101.com/r/kI5nI6/1

I can't figure out why I'm not getting any matches.


回答1:


  • You have to remove the anchors ^ and $

  • You have to add a-z in your character set.. or make the searches case insensitive with (?i) (i modifier)

Following will work:

([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})

See DEMO




回答2:


The anchors ^ and $ say to only match strings that are MAC addresses, not the parts within strings that are MAC addresses. Also, your regex uses capital letters (A-F), but the MAC addresses in that string are lowercase. Are you doing a case insensitive search (if using the re module, that would be re.IGNORECASE)? Try turning on case-insensitive search or add "a-f" after the A-F.

On a side note, there is no reason to include the : in brackets ([:]), because that means "match any one of this one character". You can just use : directly.

With case insensitive off you should be able to use this:

([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})

With case insensitive on:

([0-9A-F]{2}:){5}([0-9A-F]{2})


来源:https://stackoverflow.com/questions/30761312/regex-matching-mac-address

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!