python3网络爬虫:正则表达式匹配ip格式详解
python3网络爬虫:正则表达式匹配ip格式详解
r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]\d{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])
其中最前面的 r' 防止转义影响到我们的正则表达式;
我们知道ip段的单个值的范围是0-255,该表达式匹配时把它分为3部分来匹配,即0-199,200-249,250-255,并用 | 来表示这三个数段中的任意一段为真即为真(成功匹配)。
第一个 | 前的 [01]{0,1}\d{0,1}\d 用来匹配0-199;
[01]表示第一位数可以是0也可以是1,后面的{0,1}表示至少匹配0次,需要匹配1次;再后面的\d代表着第二位数可以是0-9中的任意一个数,同样的后面的{0,1}表示最少匹配0次,需匹配1次,这是考虑到人们在书写ip地址时几乎不会用001这样的写法,譬如不写192.168.0.001,而是写作192.168.0.1;最后用\d第三位数为任意的一位个位数字,即0-9。
第二个 | 前的 2[0-4]\d 则用来匹配200-249这个范围的数值;
开头的2代表着它的最高位为2,[0-4]即第二位数的取值范围在0到4,\d即0-9;
后面的 25[0-5] 就更好理解了:250-255的数值。
合起来就是 [01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5] ,但这还不够,因为我们的ip地址通常是由4段这样的数值构成的,由于每段数值中间用 . (小数点)隔开,即xxx.xxx.xxx.xxx。
形象一点表示是这样的:(0-255).(0-255).(0-255).(0-255) 所以在后面我们要再匹配上小数点,即把前面的内容括起来加小数点匹配三次,实现(0-255).(0-255).(0-255)。
即:
(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.)
注意括号划分优先级。
最后再加上一个(0-255)就行了,即 ([01]\d{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/80493583
- 点赞
- 收藏
- 关注作者
评论(0)