You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Regex匹配key:value格式文件中的多行IP地址

匹配多行IP地址的正则方案

针对你描述的key:value格式文件,其中IP Address:字段后可能跟着多行独立的IP地址,这里提供两种正则方案:

基础匹配方案(快速简洁)

适合不需要严格验证IP合法性的场景:

IP Address:\s*(?:\n?\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))+

严格匹配方案(验证IP合法性)

会过滤掉256.0.0.1这类不符合IPv4规范的地址:

IP Address:\s*(?:\n?\s*((?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)))+

正则结构解释

  • IP Address::精准匹配字段的固定键名
  • \s*:匹配键名后可能存在的空格、制表符等空白字符
  • (?:\n?\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))+:重复匹配多行IP的非捕获组
    • \n?\s*:匹配换行符及IP行前可能的空白缩进
    • (...):捕获组,提取单个IP地址
    • +:允许匹配一个或多个连续的IP行

示例代码(Python)

import re

# 模拟文件内容
file_content = """key1: value1
IP Address: 192.168.1.1
  10.0.0.1
key2: value2"""

# 使用严格匹配正则
pattern = r"IP Address:\s*(?:\n?\s*((?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)))+"
ip_list = re.findall(pattern, file_content)

print("提取到的IP地址:", ip_list)
# 输出:提取到的IP地址: ['192.168.1.1', '10.0.0.1']

注意事项

  • 若使用命令行工具(如grep),需开启跨行匹配支持:例如grep -Pz "IP Address:\s*(?:\n?\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))+" your_file.txt
  • 正则会自动匹配IP行前的缩进空白,无需额外调整规则

内容的提问来源于stack exchange,提问作者Sachin Kadam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:31:35