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

正则表达式如何按%%%分隔符将多段命令输出匹配到不同捕获组

适配多段分隔输出的正则方案

你当前正则失效的核心原因:默认.元字符不匹配换行符,只能捕获到第一个%%%后面的单行内容,且未开启全局匹配、未做分隔边界处理。

通用方案(支持任意数量分段,适配绝大多数正则引擎)

使用正则规则:(.*?)(?=%%%|$)
需要同时开启两个正则匹配模式:

  • **单行模式(DOTALL/S模式):让.`元字符可以匹配换行符,支持跨行匹配内容
  • 全局匹配模式(g模式):匹配到第一段内容后不停止,继续向后匹配所有符合规则的分段

规则含义说明:

  • .*?:惰性匹配任意字符,尽可能短的匹配到下一个分隔符位置
  • (?=%%%|$):正向预查规则,匹配到下一个%%%分隔符或者整个输出结尾就停止,不会把%%%本身计入匹配结果

匹配后每个匹配结果对应一段分隔的输出内容,如果需要过滤空段或者去除首尾空白,对匹配结果做trim处理即可。

命令行场景快速实现

如果是在Linux命令行中直接提取分段,可以直接执行如下命令处理输出结果:

# 将开头的输入源替换为实际的输出内容来源即可
your_output_cmd | grep -Pzo '(.*?)(?=%%%|$)'

参数说明:

  • -P 启用Perl兼容正则
  • -z 将输入内容按null字符分隔,等效开启DOTALL模式支持跨行匹配
  • -o 仅输出匹配到的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:06:03