Python 正则表达式匹配 IPv6 地址

以下是一个 Python 代码示例,用于匹配 IPv6 地址并返回 True 或 False:

import re

def is_ipv6(addr):
    pattern = re.compile(r'^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$')
    return True if pattern.match(addr) else False

该函数使用正则表达式来匹配 IPv6 地址。正则表达式的模式如下:

  • ^:匹配字符串的开始位置。
  • ([0-9a-fA-F]{1,4}:){7}:匹配七段由 1 到 4 个十六进制数字和冒号组成的子串,如 '2001:0db8:85a3:0000:0000:8a2e:0370:7334'。
  • [0-9a-fA-F]{1,4}:匹配一个由 1 到 4 个十六进制数字组成的子串,如 'fe80'。
  • $:匹配字符串的结束位置。

如果给定的地址与此模式匹配,则返回 True,否则返回 False。

下面是一些示例:

print(is_ipv6('2001:0db8:85a3:0000:0000:8a2e:0370:7334')) # True
print(is_ipv6('2001:0db8:85a3:0:0:8a2e:0370:7334')) # True
print(is_ipv6('2001:0db8:85a3::8a2e:0370:7334')) # True
print(is_ipv6('fe80::1%lo0')) # True
print(is_ipv6('2001:0db8:85a3:0000:0000:8a2e:0370')) # False
print(is_ipv6('2001:0db8:85a3:0000:0000:8a2e:0370:73341')) # False
Python 正则表达式匹配 IPv6 地址

原文地址: https://www.cveoy.top/t/topic/oOAu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录