鱼C论坛

 找回密码
 立即注册
查看: 1375|回复: 4

[已解决]正则表达式匹配问题

[复制链接]
发表于 2021-2-15 11:25:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import re
a = re.search(r'(([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}[0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]','194.121.1.1')
print(a)
这个就可以
import re
a = re.search(r'([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]\.){3}[0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]','194.121.1.1')
print(a)

这个就不行。问题出在哪?
最佳答案
2021-2-17 10:31:29
r'([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]\.){3}

第二个代码中末尾的 \. 只有25[0-5]的时候才匹配3次,其他都没有进行匹配,如果你想要他匹配三次要括号起来,不然就想下面这个一样进行重复配置

re.search(r'(\d\.|\d\d\.|[1]\d\d\.]|[2][0-4]\d\.|25[0-5]\.){3}(\d|\d\d|[1]\d\d|[2][0-4]\d|25[0-5]){1}','0.0.0.0')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-15 11:41:03 | 显示全部楼层

回帖奖励 +30 鱼币

上面的第二行代码[0-1]前面多了一个“(”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-16 17:22:00 | 显示全部楼层
因为python以为'([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]\.){3}[0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]'是
                      (([0-1]{0,1}\d{0,1}\d)|(2[0-4]\d)|(25[0-5]\.)){3}[0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]'
(注意括号!!!)
和我们想要的不符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-16 18:05:55 | 显示全部楼层
因为两个 | 表示 或 你不把数字整体括起来  python 认为找的数据 是   ( 0 - 199)  ( 200 - 249)  (250. - 255.)  一定要注意分组  还有那个 小数点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-17 10:31:29 | 显示全部楼层    本楼为最佳答案   
r'([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]\.){3}

第二个代码中末尾的 \. 只有25[0-5]的时候才匹配3次,其他都没有进行匹配,如果你想要他匹配三次要括号起来,不然就想下面这个一样进行重复配置

re.search(r'(\d\.|\d\d\.|[1]\d\d\.]|[2][0-4]\d\.|25[0-5]\.){3}(\d|\d\d|[1]\d\d|[2][0-4]\d|25[0-5]){1}','0.0.0.0')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 14:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表