Python小白求助正则表达式
Python小白求助 :自己写了个正则表达式,匹配IP地址,没有用到重复符号{},而是笨方法,感觉应该没错,为啥最后一位匹配不上?
re.search(r'((\d\d|2\d|25)\.){2}(\d\d|2\d|25|\d|\d\d)\.(\d\d|2\d|25|\d|\d\d)', '192.168.96.58')
<re.Match object; span=(0, 12), match='192.168.96.5'>
如果最后是一位就没问题
re.search(r'((\d\d|2\d|25)\.){2}(\d\d|2\d|25|\d|\d\d)\.(\d\d|2\d|25|\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'((\d\d|2\d|25|\d\d|\d)\.){3}(\d\d|2\d|25|\d\d|\d)',
'aaaa 192.168.96.58 cccc')
print(result)
另外你的代码里用了{}{:10_256:}
另外\d\d可以优化成 \d,防止匹配01这种情况。 suchocolate 发表于 2021-5-7 12:08
多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不 ...
谢谢!涨姿势{:10_264:} suchocolate 发表于 2021-5-7 12:08
多个选项用管道符的话,相对详细匹配的放前面,粗的匹配放后面。
\d 比 \d\d 匹配的多,所以\d放后面,不 ...
你好小甲鱼正则表达式匹配IP地址是这样写的:
re.search(r'{0,1}\d{0,1}\d|2\d|25', '206')
但是我觉得这样就行了吧:
re.search(r'{0,1}\d{0,1}\d|2\d|25', '206'),我去掉了从左往右数的第一个0,第一个0没什么意义吧?
页:
[1]