regexp以匹配python中的IP地址
我编写了以下regexp以匹配IP地址regexp以匹配python中的IP地址,python,regex,Python,Regex,我编写了以下regexp以匹配IP地址 x = 'IP is 200.185.24.24' y = re.findall('([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-2][0-3])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])',x) 我得到了以下答案
x = 'IP is 200.185.24.24'
y = re.findall('([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-2][0-3])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])',x)
我得到了以下答案
>>> y
[('200', '185', '24', '2')]
我这里有两个问题
感谢您的输入。将正则表达式中的所有捕获组转换为非捕获组。此外,最好使用单词边界,否则必须反转模式,如
(?:大模式|中模式|小模式)
您获得上述输出主要是因为
re.findall
函数将第一优先权赋予组而不是匹配项。如果没有组,则会优先选择匹配。在Regex Cookbook ch 7 at中有几个用于匹配IP地址的示例Regex。谢谢Avinash。我试过你的,但是返回一个空名单,但我试过你的,但是返回一个空名单,>>>>x='IP是200.185.24.24.24'>>>>>>y=y=R.findall(>>>>>>x='x='IP是200.185.24.24.24.24'>>>>>y=y=R.findall('\b=b.b('\b(?[1-1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9][1-9[1-9[1-9[1-9[1-9[1-9[1-1-9[1-1-1-1-9][1-9[1-9[1-9[1-9[1-9[1-9[1-1-1-1-9][1-[1-9][0-9]| 1[0-9][0-9]| 2[0-5][0-5])\b',x)>>>>>y[]。。。。。。。。。。。。。。。。。感谢您的投入。
y = re.findall('\b(?:[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-2][0-3])\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\b',x)