美文网首页
python正则表达式匹配合法IP

python正则表达式匹配合法IP

作者: Python_Lz | 来源:发表于2018-05-08 14:28 被阅读0次

    闲着无聊,计划练习一下正则表达式,所以找了一个相对熟悉的问题--用正则表达式匹配合法的IP地址,个人觉得这个表达式很有必要练一练,让后就根据IP地址的类型写了第一个表达式(1\d{0,2}|2[0-5]{0,2}|[1-9]\d|[1-9])\.(1\d{0,2}|2[0-5]{2}|\d{3})\.(1\d{0,2}|2[0-5]{0,2}|\d{3})\.(1\d{0,2}|2[0-5]{0,2}|\d{2}|[1-9])功能是实现了,但是太麻烦了,然后就开始各种简化,然后就这样了(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]),但是还有一个问题就是第四个号段只能取两位,第三位不现实也不报错。

    经过百般调试发现了在最后一个分组中必须在最后加上$,表示匹配字符串结尾。正确代码就是:r"(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$"

    还有一点注意的是中间有一个 . 默认是匹配任意字符,也就是说即使不是Ip地址的正确格式只要符合IP地址的基本格式都能匹配,这也是错误的,所以必须在.前加上\. ,同时在正则表达式前加上r 。

    相关文章

      网友评论

          本文标题:python正则表达式匹配合法IP

          本文链接:https://www.haomeiwen.com/subject/ueairftx.html