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

如何通过正则提取JSON数组中含嵌套结构的顶层大括号完整内容

方案1:优先使用JSON解析(更稳妥,无嵌套边界问题)

你的输入本质是经过HTML转义的JSON数组字符串,最可靠的方式是先解码转义字符,再直接解析为JSON结构,不需要写复杂的正则匹配,完全避免嵌套括号匹配出错的问题,步骤如下:

  • 第一步:解码HTML转义字符,把"替换为双引号",得到标准JSON字符串
  • 第二步:将JSON字符串解析为对应语言的数组对象
  • 第三步:遍历数组,每个元素就是你需要的顶层对象,可以按需再序列化为字符串

举个JavaScript的示例代码:

// 输入的原始字符串
const rawStr = `[{"id":...,"fieldA":"data","adjustments":[{"id":....,"fieldA":"data"},{"id":....,"fieldA":"data"}],"fieldB":"data"},{"id":...,"fieldA":"data","adjustments":[],"fieldB":"data"}]`
// 解码转义字符
const jsonStr = rawStr.replaceAll('"', '"')
// 解析为数组
const arr = JSON.parse(jsonStr)
// 遍历得到每个顶层对象的字符串形式
const result = arr.map(item => JSON.stringify(item))
// result[0]、result[1]就是你要的分组1、分组2内容

其他语言(Python、Java等)都有对应的HTML转义解码、JSON解析工具,逻辑完全一致。


方案2:正则平衡组匹配(必须用正则的场景)

如果你的场景必须用正则拆分,需要用支持平衡组/递归匹配的正则引擎(.NET、Java、PHP、PCRE2、Python的regex库等都支持),匹配顶层{}的正则写法如下:

\{(?:[^{}]+|(?R))*\}

正则解释:

  • \{:匹配左大括号开头
  • (?:[^{}]+|(?R))*:非捕获组,循环匹配两种内容:
    • 不是大括号的普通字符
    • (?R):递归匹配整个正则表达式本身,也就是匹配嵌套的{}结构
  • \}:匹配右大括号结尾

匹配后得到的每一个结果就是一个顶层对象的完整字符串。
注意:如果你的输入里大括号会出现在字符串值内部(比如某个字段值是"content":"{test}"),正则方案会匹配错误,这种场景必须用JSON解析方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:15:01