|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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'>
求大神指点!
本帖最后由 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这种情况。
|
|