📅  最后修改于: 2023-12-03 14:55:53.872000             🧑  作者: Mango
IP 地址是计算机网络中标识设备位置的地址,它通常由四个十进制数表示,每个数的取值范围是 0~255。如果你需要从一些数据中提取 IP 地址,或者验证一个字符串是否符合 IP 地址的格式,那么可以使用正则表达式。
IP 地址的正则表达式可以分成两部分:匹配四个十进制数和限定每个数取值范围。四个十进制数的匹配可以用 \d{1,3}
来表示,其中 \d
是数字字符的缩写,{1,3}
表示最少一个数字,最多三个数字。限定数值范围可以使用前向零宽断言,匹配 0~199 可以写成 (1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)
,说明如下:
(1?\d{1,2}|
表示匹配 0~199 中的数值,1?
表示 0 或 1 的可选项,\d{1,2}
表示匹配 1~99 或 100~199 中的数值(如果第一个数字是 0,则只能匹配一个数字)。2([0-4]\d|5[0-5])|
表示匹配 200~255 中的数值,2
表示第一个数字是 2,[0-4]\d
表示第二个数字是 0~4 中的数,\d
表示第三个数字是任意数字,5[0-5]
表示第二个数字是 5,第三个数字是 0~5 中的数。[1-9]\d?)
表示匹配 1~99 中的数值,第一个数字为 1~9,第二个数字可以省略,或者是 0~9 中的任意数字。四个十进制数可以使用 \.
进行分隔,整个正则表达式如下:
\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)
下面是一些验证 IP 地址的示例:
import re
def is_valid_ip(ip):
regex = r'\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)'
return True if re.match(regex, ip) else False
# 测试
print(is_valid_ip('192.168.1.1')) # True
print(is_valid_ip('256.168.1.1')) # False
print(is_valid_ip('255.256.1.1')) # False
print(is_valid_ip('255.255.256.1')) # False
本文介绍了正则表达式 IP 地址的规则和实例。如果你想深入学习正则表达式,可以阅读 Python3 中的正则表达式。