python3网络爬虫:正则表达式匹配ip格式详解

举报
brucexiaogui 发表于 2021/12/30 00:01:24 2021/12/30
【摘要】  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' &nbs...

 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])

转载:https://blog.csdn.net/u012425420/article/details/77952256

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/80493583

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。