如何从字符串中提取IP地址

时间:2019-10-30 07:50:37

标签: python regex

我正在尝试从字符串

中提取IP地址
import re
stri_ = '''192.168.1.1,192.168.1.2/32,192.168.1.5-192.168.1.7,reject,
reject,192.168.1.1/32,reject
172.168.1.4-172.168.1.4,reject
'''
ip_addr_with_range = re.findall('([0-9+-reject]+)\,(reject)*',stri_)
ip_addr_without_range = re.findall('/([0-9\-reject]+)*',stri_)
for i in ip_addr_with_range :
      print (i[0])

我的出场

192.168.1.1,192.168.1.2/32,192.168.1.5-192.168.1.7,reject,reject,192.168.1.1/32
172.168.1.4-172.168.1.4

所需

 ip_addr_with_range
[192.168.1.1,192.168.1.2/32,192.168.1.5,192.168.1.7,192.168.1.1/32,172.168.1.4,172.168.1.4]


ip_addr_without_range
 [192.168.1.1,192.168.1.2,192.168.1.5,192.168.1.7,192.168.1.1,172.168.1.4,172.168.1.4]

2 个答案:

答案 0 :(得分:1)

这应该有效。

ip_addr_with_range = re.findall('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/?\d{0,}', stri_)
ip_addr_without_range = re.findall('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', stri_)

答案 1 :(得分:0)

ip_addr_without_range= re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})',stri_)
ip_addr_without_range
['192.168.1.1',
 '192.168.1.2',
 '192.168.1.5',
 '192.168.1.7',
 '192.168.1.1',
 '172.168.1.4',
 '172.168.1.4']