Python正则表达式提取用冒号分隔的IP

Python正则表达式提取用冒号分隔的IP,python,regex,Python,Regex,这里有一个例子:“192.168.1.1;192.168.1.2' 我的代码: import re regex = '^((?:(?: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]?)[;]?)+$' r = re.match(regex, '192.168.1.1;192.168.1.2') r.groups() # => ('192.168.1.2',) # My exp

这里有一个例子:“192.168.1.1;192.168.1.2'

我的代码:

import re
regex = '^((?:(?: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]?)[;]?)+$'
r = re.match(regex, '192.168.1.1;192.168.1.2')
r.groups() # => ('192.168.1.2',)
# My expected result => ('192.168.1.1', '192.168.1.2',)

# re.findall(regex, '192.168.1.1;192.168.1.2') => ['192.168.1.2'] is not what I want......
我使用
()
捕获每个IP,但结果只显示一个IP。 我的用法错了吗

谢谢您的帮助。

只需使用
re.finditer()

如果需要,也可以使用此正则表达式:
regex=r'(\d{3}\.\d{3}\.\d\.\d)

和使用是否希望两个IP都在不同的行上?@Tushar
findall
不会在列表中显示这两个IP。我想我的正则表达式可能是错的…@Stribizev我想问题在于正则表达式,
findall
无法解决问题。这只显示了
192.168.11.1;192.168.12.1
,但我想将这两个ip提取到一个列表中。使用我提供的正则表达式,然后将其附加到一个列表中。哦…,你的意思是
regex=r'(\d{3}\.\d{3}\.\d\.\d)
?我认为这种格式不是我想要的。
import re
regex = '^((?:(?: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]?)[;]?)+$'
for r in re.finditer(regex, '192.168.1.1;192.168.1.2'):
  print r.group()