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

Redshift中使用Regex提取嵌套括号内目标字符串的方法咨询

Redshift 正则提取嵌套括号最内层指定内容方案

问题原因

你之前使用的正则\((.*?)\)采用非贪婪匹配规则,会从字符串第一个左括号开始匹配,遇到第一个右括号就停止捕获,因此只能拿到最外层左括号到首个右括号的内容,和预期提取最内层括号内容的需求不符。

可用解决方案

方案1:一步提取(推荐)

利用正则贪婪匹配特性直接定位到整个字符串最后一个左括号(也就是最内层括号的左边界),再捕获第一个逗号前的目标内容,Redshift 中写法如下:

REGEXP_EXTRACT(你的字符串列名, '.*\\(([^,]+),', 1)
  • 正则逻辑说明:.*贪婪匹配所有字符直到最后一个(,([^,]+)捕获后续到第一个逗号为止的内容,也就是你需要的contentname
  • 注意Redshift中反斜杠需要二次转义,因此写为\\(

方案2:兼容性更强的分步提取

如果最内层括号内的格式可能发生变化,可以先提取整个最内层括号的内容,再拆分取第一个值:

SPLIT_PART(REGEXP_EXTRACT(你的字符串列名, '\\(([^()]*)\\)', 1), ',', 1)
  • 正则\(([^()]*)\)会匹配内容中不含其他括号的最内层括号对,捕获括号内的全部内容contentname,None,再用SPLIT_PART按逗号切分取第一个值即可。

验证效果

针对示例字符串CompletenessConstraint(Completeness(contentname,None)),两种方案最终返回结果均为contentname,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:06:02