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

如何在Redshift中使用正则表达式提取指定内容前的文本

Redshift中提取开头公司名的解决方案

由于Redshift的POSIX正则引擎不支持非捕获组(?:),我们可以通过修改正则表达式,使用普通捕获组或直接替换冗余内容的方式实现需求。

方法一:使用REGEXP_REPLACE替换冗余内容

直接匹配字符串中公司名之后的后缀部分(如Gift Card、Digital Gift Card等),将其替换为空字符串,即可得到开头的公司名:

SELECT
  card_text,
  -- 替换掉公司名后的所有冗余内容
  REGEXP_REPLACE(card_text, '\s+(Digital\s+)?Gift\s+Cards?.*', '') AS company_name
FROM your_table_name;

匹配逻辑说明:

  • \s+:匹配公司名后至少一个空格
  • (Digital\s+)?:可选的Digital及后续空格(用普通捕获组替代原非捕获组,不影响替换效果)
  • Gift\s+Cards?:匹配Gift Card或Gift Cards
  • .*:匹配后续所有内容

方法二:使用REGEXP_SUBSTR提取捕获组

通过正则捕获组锁定开头的公司名,再指定提取第一个捕获组的内容:

SELECT
  card_text,
  -- 提取第一个捕获组的内容(即公司名)
  REGEXP_SUBSTR(card_text, '^(.*?)\s+(Digital\s+)?Gift\s+Cards?.*', 1, 1, 'e', 1) AS company_name
FROM your_table_name;

参数说明:

  • 第6个参数1:指定提取第一个捕获组的内容
  • 'e':启用扩展正则模式,确保捕获组正常工作

验证示例

针对你提供的测试文本,两种方法都能得到预期结果:

Textcompany_name
Company-1 Gift Card $100Company-1
Company 2 Digital Gift Card $100Company 2
Company 6 Gift Card $100 - PhysicalCompany 6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:01:18