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

PostgreSQL如何提取冒号与右方括号间的不定长度数据

解决方法

针对你遇到的提取结果带右括号的问题,这里提供几种实用的处理方式:

  • 精准正则提取(推荐)
    修改SUBSTRING的正则表达式,直接只提取到右括号前的内容,避免后续处理:

    SUBSTRING(table.field from 'LOCTN\s*:\s*([^\]]+)') AS test
    

    说明:\s*匹配任意数量的空格(适配LOCTN与冒号、冒号与内容间的空格变化),[^\]]+表示匹配所有非右括号的字符,完美截取目标内容。

  • 对已有结果做后处理
    如果想保留你原来的split类方法,可以在结果中去掉末尾的右括号:

    • 用TRIM专门去除末尾的]:
      TRIM(TRAILING ']' FROM split_part(wa.fx, ':', 2)) AS SUB1
      
    • 用regexp_replace替换掉结果中的](适合仅末尾有该符号的场景):
      regexp_replace((regexp_split_to_array(wa.fx, ':'::text))[2], ']', '', 'g') AS STUFF
      
  • 优化原正则写法
    如果你想沿用最初的SUBSTRING思路,调整正则的捕获组即可:

    SUBSTRING(table.field from '[LOCTN]    : ([^\]]+)') AS test
    

    把原来的.*?[^|:]]+改成[^\]]+,精准排除右括号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:05:57