我使用变量来保存这样的ip,但我需要验证它是否真的具有ip格式。ip 字段并不总是一个列表。 我有这个:
ip=["8.8.8.8","8.8.8.6"] # List or only one element
reg_ip = r'(?:d{1,3}.)+(?:d{1,3})'
filter_ip=re.findall(reg_ip,ip)
但答案如下
filter_ip= [u"8.8.8.8",u"8.8.8.6"]
因此不符合条件
if ip == reg_ip:
我应该怎么做?
import re
ip="8.8.8.8"
reg_ip = r'(?:d{1,3}.)+(?:d{1,3})'
filter_ip=re.findall(reg_ip,ip)
if ip in reg_ip:
pass
基本上,您正在检查是否有任何与正则表达式匹配项,因此.findall
将返回匹配项数
import re
ip=["8.8.8.8","8.8.8.6"]
reg_ip = re.compile(r'(?:d{1,3}.)+(?:d{1,3})')
filter_ip = list(filter(reg_ip.search, ip))
if ip == filter_ip:
print "All ip Matched!"
如果您有单个ip
要检查,建议您使用.search
,因为它更快,并且不需要多个匹配项。
使用.search
ip="8.8.8.8"
reg_ip = r'(?:d{1,3}.)+(?:d{1,3})'
if re.search(reg_ip,ip):
print "Matched !"