用于匹配IP地址的Python Regex Logic

时间:2013-10-17 19:19:35

标签: regex python-2.7

有人可以向我解释为什么这不匹配,我收到了不可接受的内容。

linesout = "test.host.com (10.200.100.10)"
pat = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.match(linesout)
if test:
        print "Acceptable ip address"
else:
        print "Unacceptable ip address"

谢谢

2 个答案:

答案 0 :(得分:3)

使用search代替match

pat = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.search(linesout)

如果您想使用match,请使用.*

添加正则表达式
pat = re.compile(".*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.match(linesout)

两种情况下的输出:

Acceptable ip address

引用search() vs. match()

的文档
  

Python提供了两种基于常规的基本操作   表达式:re.match()仅在开头检查匹配   字符串,而re.search()检查匹配中的任何位置   string(这是Perl默认执行的操作)。

答案 1 :(得分:-1)

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")