最近在搞ipv6,对ipv6地址匹配有一定需求,在不依赖外部库的情况下最快的方法是用系统指令获取ip地址,然后用正则匹配。
然而网上看了一下,排名前几的博客对于ipv6的正则匹配都是几年前写的,而且匹配的ipv6地址并不是标准的ipv6格式。
下面给出一个匹配ipv6地址的正则表达式,不是很严格,但是很有用
ipv6_regex = r'((?:[0-9a-fA-F]{1,4}:)+(?:[0-9a-fA-F]{1,4})?(?::[0-9a-fA-F]{1,4})+)'
注意:此正则表达式会匹配到物理地址,因为两者太像了
其中的?: 在括号中起到取消捕获组的功能。
可以自己去在线正则网站上实验一下
ipv6具体的地址规则有兴趣也可以自行编写规则