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

如何匹配跨多行括号内的内容,提取IP_LIST数组中的IP网段

问题根源

你写的正则存在3个核心问题:

  • [\n.]属于字符集匹配规则,方括号内的.仅代表字面量小数点,不是通配符,所以只能匹配换行和小数点两类字符,无法匹配字母、数字、斜杠等其他内容
  • Python re 模块默认.通配符不匹配换行符,跨多行匹配需要显式开启flag
  • 没有使用非贪婪匹配规则,若文件后续存在其他右括号会出现匹配范围溢出的问题

正确实现代码

import re

# 第一步:匹配IP_LIST括号内的全部内容,开启re.DOTALL让.匹配包括换行在内的所有字符
match_res = re.search(r"IP_LIST=\((.*?)\)", out1, flags=re.DOTALL)
if match_res:
    # 提取括号内的原始内容
    raw_content = match_res.group(1)
    # 第二步:匹配所有单引号包裹的IP网段,存入数组
    ip_segment_list = re.findall(r"'([^']+)'", raw_content)
    # 此时ip_segment_list就是你需要的IP网段数组

补充说明

如果你的bash代码里存在右括号转义、双引号包裹IP的特殊情况,只需要调整第二步findall的匹配规则即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:04