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

求助:Snowflake POSIX BRE引擎下无前后瞻的正则提取方案

适配POSIX BRE的正则提取方案

需求明确:从文本中提取冒号(:)之后、第一个竖线(|)之前的所有字符;如果没有竖线,则提取到字符串末尾。由于POSIX BRE不支持前后瞻语法,可通过捕获组+整串匹配的方式实现,具体方案如下:

正则表达式(POSIX BRE)

^[^:]*:\([^|]*\).*

逻辑拆解

  • ^[^:]*::匹配字符串开头到第一个冒号的全部内容(包含冒号本身)
  • \([^|]*\):定义捕获组,匹配冒号后到第一个竖线前的所有字符;若文本无竖线,[^|]*会匹配到字符串末尾
  • .*:匹配第一个竖线之后的所有内容(如果存在)

在Snowflake中的使用示例

利用REGEXP_SUBSTR函数提取捕获组1的内容:

SELECT 
  REGEXP_SUBSTR('2022 CKL04 TER-PRO:CPT-REFRESH PRD|NPR', '^[^:]*:\\([^|]*\\).*', 1, 1, 'b', 1) AS extracted;

参数说明:

  • 'b':指定使用POSIX BRE模式(Snowflake默认是ERE,需显式声明)
  • 最后一个1:表示提取第一个捕获组的内容

验证所有示例均符合预期:

  • 例1输入提取结果:CPT-REFRESH PRD
  • 例2输入提取结果:CPT-REFRESH PRD
  • 例3输入提取结果:CPT-LEASING PRD
  • 例4输入提取结果:PRODUCT
  • 例5输入提取结果:MS-PRD & SVC ANNUAL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:55:16