从文本中提取IP和IP范围可以通过以下步骤实现:
\b(?:\d{1,3}\.){3}\d{1,3}\b
,IP范围的正则表达式可以使用以下模式:\b(?:\d{1,3}\.){3}\d{1,3}\s*-\s*(?:\d{1,3}\.){3}\d{1,3}\b
。以下是一个示例代码,演示如何从文本中提取IP和IP范围:
import re
def extract_ips(text):
ip_pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'
ip_range_pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\s*-\s*(?:\d{1,3}\.){3}\d{1,3}\b'
ips = []
ip_ranges = []
# 提取IP地址
ip_matches = re.findall(ip_pattern, text)
ips.extend(ip_matches)
# 提取IP范围
ip_range_matches = re.findall(ip_range_pattern, text)
for ip_range in ip_range_matches:
start_ip, end_ip = ip_range.split('-')
ip_ranges.append({"start_ip": start_ip.strip(), "end_ip": end_ip.strip()})
return ips, ip_ranges
# 示例文本
text = "这是一段包含IP地址和IP范围的文本,比如192.168.0.1,10.0.0.1-10.0.0.10等等。"
# 提取IP地址和IP范围
ips, ip_ranges = extract_ips(text)
# 打印提取结果
print("提取到的IP地址:", ips)
print("提取到的IP范围:", ip_ranges)
这段代码将会输出以下结果:
提取到的IP地址: ['192.168.0.1', '10.0.0.1', '10.0.0.10']
提取到的IP范围: [{'start_ip': '10.0.0.1', 'end_ip': '10.0.0.10'}]
对于IP地址的提取,可以直接使用正则表达式进行匹配。对于IP范围的提取,可以使用正则表达式匹配到范围字符串后,再通过字符串分割得到起始IP和结束IP。
领取专属 10元无门槛券
手把手带您无忧上云