IP正则匹配式及记录一个坑

ipv4地址的正则(python 正则)匹配为:
'((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)'

 

坑:

下面的一个错误的ip正则表达式是参考别的博客的,是有错误的。因为它优先匹配的一位数,其次是两位数,最后是三位数。可能会将3位数匹配成两位,如下图:

'(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)'  (错误)

错误如下:(用Python脚本统计Apache日志中出现次数前五的ip地址。第一次脚本用的正确的正则匹配式,第二次脚本用的上面的错误的正则匹配式)

 

 

 

提示:(2019-12-12更新)

在grep命令直接使用上面的正则表达式时,“\d”是匹配不到数字的。因为grep命令默认使用基本正则表达式( BREs),使用 grep -P 指定使用Perl正则表达式(PREs)即可。

具体参考:https://blog.csdn.net/yufenghyc/article/details/51078107 (grep中使用"\d"匹配数字不成功的原因)

 

posted on 2019-01-24 16:35  iouwenbo  阅读(184)  评论(0编辑  收藏  举报

导航