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

Redshift中如何用单个正则匹配倒数第二个}并修复截断JSON

用单个正则表达式在Redshift SQL中修复截断的JSON

问题场景

API返回的JSON经常会因为字符长度限制被截断,我们需要保留到倒数第二个}为止的内容,删掉后面的所有无效字符,让JSON恢复合法格式。举个例子:

截断的输入

{"date": "2004", "day": 0, "count": 0, "stage": "arst"}, {"date": "2004", "day": 1, "count": 0, "stage": "oien"}, {"date": "2005

期望的合法输出

{"date": "2004", "day": 0, "count": 0, "stage": "arst"}

之前要三次调用regexp_replace才能搞定,现在可以用单个正则表达式一步完成。

解决方案

直接用下面的Redshift SQL语句就能实现:

SELECT regexp_replace(
  your_json_column,
  '^(.*\})(?:.*\})?.*$',
  '\1'
) AS fixed_json
FROM your_table;

正则逻辑拆解

  • ^:锁定字符串开头,防止从中间匹配
  • (.*\}):核心捕获组,用贪婪匹配的方式,把从开头到**倒数第二个}**的所有内容抓下来存好——.*会尽可能多匹配字符,直到碰到倒数第二个}就停止,这部分就是我们要保留的合法JSON
  • (?:.*\})?:临时非捕获组,用来匹配最后那个完整的JSON对象(如果有的话),加个?是为了兼容输入本身只有一个完整JSON的情况
  • .*$:把最后一个}之后的所有截断垃圾内容全匹配上
  • 替换时只取第一个捕获组的内容\1,相当于直接砍掉后面的无效部分,只留合法的JSON片段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:29