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

多行正则匹配:筛选包含指定字符串的Object至EndObject块

解决方案

要精准匹配包含z =的Object到EndObject完整块,关键是限制匹配范围不跨越其他块的起始/结束标记,避免错误覆盖多个块。以下是修正后的正则表达式:

^\s*Object : .*$(?:(?!^\s*(?:Object|EndObject)).*\r?\n)*z = .*$(?:(?!^\s*(?:Object|EndObject)).*\r?\n)*^\s*EndObject$

正则说明

  • ^\s*Object : .*$:匹配块的起始行,允许行首有任意空格
  • (?:(?!^\s*(?:Object|EndObject)).*\r?\n)*:核心限制逻辑——匹配任意行,但排除以空格开头的Object或EndObject行,确保不会跨到其他块中
  • z = .*$:精准定位包含目标字符串的行
  • 末尾重复限制逻辑后,匹配块的结束行^\s*EndObject$

使用注意

必须开启多行模式(正则引擎的m flag),这样^和$才能匹配每行的行首和行尾,而非整个文本的首尾。

错误原因分析

你之前的正则用[\s\S]*?匹配任意内容,但未限制不能出现其他Object或EndObject标记,导致引擎会从第一个Object开始,一直找到最后一个EndObject才停止,从而错误覆盖了多个块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:27:32