用python把字符串中的IP地址提取出来,并对结果进行排序
时间: 2024-03-02 21:49:27 浏览: 82
可以使用正则表达式来匹配字符串中的IP地址,再使用 `ipaddress` 模块对IP地址进行排序。下面是一个示例代码:
```python
import re
import ipaddress
# 待匹配的字符串
s = "Some text with IP address 192.168.1.1 and 10.0.0.1"
# 使用正则表达式匹配IP地址
ip_regex = r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b'
ips = re.findall(ip_regex, s)
# 将IP地址转换成ipaddress.IPv4Address对象,并排序
sorted_ips = sorted([ipaddress.IPv4Address(ip) for ip in ips])
# 打印排序后的IP地址
for ip in sorted_ips:
print(str(ip))
```
输出结果:
```
10.0.0.1
192.168.1.1
```
在这个示例中,我们首先使用正则表达式 `\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b` 匹配字符串中的IP地址。这个正则表达式的含义是:匹配以单词边界开头和结尾的、由四个数字和三个点号组成的字符串。这个正则表达式并不完整,因为它只匹配了最基本的IP地址格式,但足够应付大多数情况。
接下来,我们将匹配到的IP地址转换成 `ipaddress.IPv4Address` 对象,并使用 `sorted` 函数对它们进行排序。最后,我们打印排序后的IP地址。
需要注意的是,`ipaddress.IPv4Address` 对象是不可变的,因此我们无法对它们进行原地排序,而是需要使用 `sorted` 函数或者类似的方法来创建一个新的已排序列表。
阅读全文