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

Redshift中用REGEX_SUBSTR提取" at"前内容的正则问题

Redshift中提取" at"前内容的正则问题解决

问题根源

你用的(?=\sat)是Perl兼容正则(PCRE)的正向前瞻断言,但Redshift采用的是POSIX扩展正则表达式(ERE),不支持这种零宽断言语法,所以会报正则解析错误。

三种可行解决方案

方案1:用REGEXP_SUBSTR捕获组提取

利用Redshift的REGEXP_SUBSTR支持捕获组的特性,指定提取第一个捕获组的内容:

SELECT regexp_substr('withdrawal from Credit Union at main avenue', '(.*?)\\sat', 1, 1, 'e', 1);
  • (.*?):非贪婪匹配任意字符(避免匹配到最后一个" at")
  • \\sat:匹配空格+at(Redshift里转义空格需用双反斜杠)
  • 最后一个参数1:指定提取第一个捕获组的内容

方案2:用REGEXP_REPLACE替换后部分

把" at"及后面的所有内容替换为空字符串:

SELECT regexp_replace('withdrawal from Credit Union at main avenue', '\\sat.*$', '');
  • \\sat.*$:匹配空格+at,以及从该位置到字符串结尾的所有内容
  • 替换为空后直接得到目标内容

方案3:用SPLIT_PART分割(最简单)

如果" at"是固定分隔符,直接用分割函数更高效:

SELECT split_part('withdrawal from Credit Union at main avenue', ' at', 1);
  • 按" at"分割字符串,取第一部分即可

以上三种方法都能返回你期望的结果:withdrawal from Credit Union

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:02:09