Yukiouht 发表于 2020-10-12 15:30:52

正则表达式匹配IP的问题

本帖最后由 Yukiouht 于 2020-10-12 15:30 编辑

看了小甲鱼的爬虫视频,在057讲的正则表达式中,视频末尾21:06时说了这个正则表达式有个小bug,这是视频中的代码:
>>> re.search(r'(({0,1}\d{0,1}\d|2\d|25)\.){3}({0,1}\d{0,1}\d|2\d|25)', '192.168.1.1')
<re.Match object; span=(0, 11), match='192.168.1.1'>
(此处的代码是照视频手打出来的)
后面看完视频,因为好奇就在要匹配的IP地址里,换了个255.255.255.255,结果返回如下:
>>> re.search(r'(({0,1}\d{0,1}\d|2\d|25)\.){3}({0,1}\d{0,1}\d|2\d|25)', '255.255.255.255')
<re.Match object; span=(0, 14), match='255.255.255.25'>
如代码,第三个 “ . ” 后面的数只有两位了,还有一位莫名其妙被吞掉了,尝试解决着:
>>> re.search(r'(({0,1}\d{0,1}\d|2\d|25)\.){3}({0,1}\d{0,1}\d|2\d|25{1})', '255.255.255.255')
<re.Match object; span=(0, 14), match='255.255.255.25'>
(加了个{1},就是第三位必须重复一次)
不过结果还是一样,然后就没啥头绪了,不知道怎么样解决.(也不知道小甲鱼说的bug是不是这个{:10_243:} )

疾风怪盗 发表于 2020-10-12 19:26:55

视频里不知道。。。。。
但是小甲鱼论坛的扩展阅读里
https://fishc.com.cn/forum.php?mod=viewthread&tid=128224&highlight=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD

是这样的:
import re

a=re.search(r'(25|2\d|\d{2}|?\d)\.(25|2\d|\d{2}|?\d)\.(25|2\d|\d{2}|?\d)\.(25|2\d|\d{2}|?\d)', '255.255.255.255')
print(a)

<re.Match object; span=(0, 15), match='255.255.255.255'>

Yukiouht 发表于 2020-10-12 19:33:41

疾风怪盗 发表于 2020-10-12 19:26
视频里不知道。。。。。
但是小甲鱼论坛的扩展阅读里
https://fishc.com.cn/forum.php?mod=viewthread&ti ...

感谢!!
页: [1]
查看完整版本: 正则表达式匹配IP的问题