Python正则表达式提取以冒号分隔的IP地址。

57 浏览
0 Comments

Python正则表达式提取以冒号分隔的IP地址。

这是一个例子:\'192.168.1.1;192.168.1.2\'\n我的代码:\n

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',)
# 我期望的结果 => ('192.168.1.1', '192.168.1.2',)
# re.findall(regex, '192.168.1.1;192.168.1.2') => ['192.168.1.2'] 不是我想要的......

\n我使用()来捕获每个IP,但结果只显示一个IP。\n我的使用方法有问题吗?\n感谢您的帮助。

0
0 Comments

Python正则表达式提取使用冒号分隔的IP地址的问题出现的原因是,原始字符串中的IP地址使用分号而不是冒号进行分隔,而提取的结果中只显示了满足条件的IP地址,没有按照要求将它们添加到一个列表中。解决方法是使用re模块中的finditer()函数来查找匹配的IP地址,并将它们添加到一个列表中。

以下是解决该问题的代码示例:

import re
regex = r'(\d{3}\.\d{3}\.\d\.\d)'
ip_list = []
for match in re.finditer(regex, '192.168.1.1;192.168.1.2'):
    ip_list.append(match.group())
print(ip_list)

运行以上代码,输出结果为:

['192.168.1.1', '192.168.1.2']

通过使用给定的正则表达式,我们成功地从原始字符串中提取出了两个使用冒号分隔的IP地址,并将它们添加到了一个列表中。

0