鱼C论坛

 找回密码
 立即注册
查看: 1487|回复: 3

[已解决]Python小白求助正则表达式

[复制链接]
发表于 2021-5-7 11:54:07 | 显示全部楼层 |阅读模式

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

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

x
Python小白求助 :
自己写了个正则表达式,匹配IP地址,没有用到重复符号{},而是笨方法,感觉应该没错,为啥最后一位匹配不上?

re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.){2}([01]\d\d|2[0-4]\d|25[0-5]|\d|\d\d)\.([01]\d\d|2[0-4]\d|25[0-5]|\d|\d\d)', '192.168.96.58')
<re.Match object; span=(0, 12), match='192.168.96.5'>

如果最后是一位就没问题
re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.){2}([01]\d\d|2[0-4]\d|25[0-5]|\d|\d\d)\.([01]\d\d|2[0-4]\d|25[0-5]|\d|\d\d)', '192.168.9.8')
<re.Match object; span=(0, 11), match='192.168.9.8'>

求大神指点!
最佳答案
2021-5-7 12:08:16
本帖最后由 suchocolate 于 2021-5-7 12:11 编辑

多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不然匹配一个就结束了,后面re就不看了。
import re

result = re.search(r'(([1]\d\d|2[0-4]\d|25[0-5]|\d\d|\d)\.){3}([1]\d\d|2[0-4]\d|25[0-5]|\d\d|\d)',
          'aaaa 192.168.96.58 cccc')
print(result)
另外你的代码里用了{}
另外\d\d可以优化成 [1-9]\d,防止匹配01这种情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-7 12:08:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2021-5-7 12:11 编辑

多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不然匹配一个就结束了,后面re就不看了。
import re

result = re.search(r'(([1]\d\d|2[0-4]\d|25[0-5]|\d\d|\d)\.){3}([1]\d\d|2[0-4]\d|25[0-5]|\d\d|\d)',
          'aaaa 192.168.96.58 cccc')
print(result)
另外你的代码里用了{}
另外\d\d可以优化成 [1-9]\d,防止匹配01这种情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-7 13:03:44 | 显示全部楼层
suchocolate 发表于 2021-5-7 12:08
多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不 ...

谢谢!涨姿势
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 21:33:50 | 显示全部楼层
suchocolate 发表于 2021-5-7 12:08
多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不 ...

你好小甲鱼正则表达式匹配IP地址是这样写的:
re.search(r'[01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]', '206')
但是我觉得这样就行了吧:
re.search(r'[1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]', '206'),我去掉了从左往右数的第一个0,第一个0没什么意义吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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