正则表达式匹配问题
import rea = re.search(r'(({0,1}\d{0,1}\d|2\d|25)\.){3}{0,1}\d{0,1}\d|2\d|25','194.121.1.1')
print(a)
这个就可以
import re
a = re.search(r'({0,1}\d{0,1}\d|2\d|25\.){3}{0,1}\d{0,1}\d|2\d|25','194.121.1.1')
print(a)
这个就不行。问题出在哪? 上面的第二行代码前面多了一个“(” 因为python以为'({0,1}\d{0,1}\d|2\d|25\.){3}{0,1}\d{0,1}\d|2\d|25'是
(({0,1}\d{0,1}\d)|(2\d)|(25\.)){3}{0,1}\d{0,1}\d|2\d|25'
(注意括号!!!)
和我们想要的不符 因为两个 | 表示 或 你不把数字整体括起来python 认为找的数据 是 ( 0 - 199)( 200 - 249)(250. - 255.)一定要注意分组还有那个 小数点 r'({0,1}\d{0,1}\d|2\d|25\.){3}
第二个代码中末尾的 \. 只有25的时候才匹配3次,其他都没有进行匹配,如果你想要他匹配三次要括号起来,不然就想下面这个一样进行重复配置
re.search(r'(\d\.|\d\d\.|\d\d\.]|\d\.|25\.){3}(\d|\d\d|\d\d|\d|25){1}','0.0.0.0')
页:
[1]