正则表达式匹配合法网络ip

2019-12-08  本文已影响0人  thepoy

1、在写正则表达式前,需要知道什么是合法的网络ip(不识别本地和回路):

2、写第一个数字的规则

[1-9]\d?|1[013456789]\d|1\d[012345689]|2[0-4]\d|25[0-4]

3、其余数字

同样分为一位数、二位数、三位数

[0-9]|[1-9]\d?|1\d{2}|2[0-4]\d|25[0-5]

4、完整表达式

需要用?:让每个()内的分组表达式匹配的子字符串不被捕获,否则最终得到的结果将是由若干个字符串组成的元组,而不是ip地址,有兴趣的可以自己测试去掉?:后运行代码

a = '10.2.2.22'
result = re.findall(r'^(?:[1-9]\d?|1[013456789]\d|1\d[012345689]|2[0-4]\d|25[0-4])(?:\.(?:[0-9]|[1-9]\d?|1\d{2}|2[0-4]\d|25[0-5])){3}\Z', a)
print(result)
# ['10.2.2.22']
上一篇 下一篇

猜你喜欢

热点阅读