使用正则表达式匹配IP地址

26

我正在尝试创建一个测试,以检查sys.argv输入是否匹配IP地址的正则表达式...

作为简单的测试,我有以下代码...

import re

pat = re.compile("\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}")
test = pat.match(hostIP)
if test:
   print "Acceptable ip address"
else:
   print "Unacceptable ip address"
然而,当我向它传递随机值时,在大多数情况下它会返回“可接受的IP地址”,除非我有一个与 \d+ 基本等效的“地址”。

5
你愿意将 999.999.999.999 视为“有效”的 IP 地址吗? :) - Maria Zverina
请查看以下链接:https://dev59.com/I3RC5IYBdhLWcg3wXP0C?lq=1 和 http://stackoverflow.com/questions/10191442/check-hostnames-and-ip-addresses-v4-and-v6-using-a-single-python-regex?rq=1 - belacqua
14个回答

-1

IP地址使用以下身份验证方式:

  1. 255 ---> 250-255
  2. 249 ---> 200-249
  3. 199 ---> 100-199
  4. 99 ---> 10-99
  5. 9 ---> 1-9

    import re    
    k = 0
    while k < 5 : 
        i = input("\n请输入IP地址:")
        ip = re.match("^([1][0-9][0-9].|^[2][5][0-5].|^[2][0-4][0-9].|^[1][0-9][0-9].|^[0-9][0-9].|^[0-9].)([1][0-9][0-9].|[2][5][0-5].|[2][0-4][0-9].|[1][0-9][0-9].|[0-9][0-9].|[0-9].)([1][0-9][0-9].|[2][5][0-5].|[2][0-4][0-9].|[1][0-9][0-9].|[0-9][0-9].|[0-9].)([1][0-9][0-9]|[2][5][0-5]|[2][0-4][0-9]|[1][0-9][0-9]|[0-9][0-9]|[0-9])$",i)
        k = k + 1 
        if ip:
            print ("\n=====================")
            print ("有效的IP地址")
            print ("=====================")
            break
        else :
            print ("\n无效的IP地址")
    else :
        print ("\n最多允许5次")
    

如果您有疑问,请回复我!


-1
import re

st1 = 'This is my IP Address10.123.56.25 789.356.441.561 127 255 123.55 192.168.1.2.3 192.168.2.2 str1'

这里我的有效IP地址只有192.168.2.2,假设10.123.56.25不是有效的,因为它与一些字符串组合在一起,而192.168.1.2.3也无效。

pat = r'\s(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\s|$))'

match = re.search(pat,st1)

print match.group()

================ RESTART: C:/Python27/Srujan/re_practice.py ================
192.168.2.2 

这将grep出确切的IP地址,我们可以忽略任何看起来像IP地址但不是有效的模式。例如:'Address10.123.56.25','789.356.441.561','192.168.1.2.3'

如果需要进行任何修改,请进行评论。


-2

这适用于Python 2.7版本:

import re
a=raw_input("Enter a valid IP_Address:")
b=("[0-9]+"+".")+"{3}"
if re.match(b,a) and b<255:
    print "Valid"
else:
    print "invalid"

-2

"""用于查找有效IP地址的正则表达式"""

import re


IPV4 = re.fullmatch('([0-2][0-5]{2}|\d{2}|\d).([0-2][0-5]{2}|\d{2}|\d).([0-2][0-5]{2}|\d{2}|\d).([0-2][0-5]{2}|\d{2}|\d)', '100.1.1.2')

if IPV4:
    print ("Valid IP address")

else:
    print("Invalid IP address")

1
在发布之前最好先进行测试! - Toto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接