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

Snowflake中如何提取Prod列中TAB/LAB/RAB前的内容?

解决Snowflake中提取TAB/LAB/RAB前内容的正则问题

问题分析

你当前的正则表达式^(.+)TAB|LAB|RAB存在两个核心问题:

  1. 优先级错误:|的优先级极低,导致正则被拆分成三个独立模式:^(.+)TAB、LAB、RAB,而非将TAB|LAB|RAB作为一个整体匹配终止符。
  2. 贪婪匹配导致冗余:(.+)是贪婪匹配,会尽可能捕获最多字符,最终把终止词(如TAB)也包含进结果里。

正确解决方案

使用非贪婪匹配结合非捕获组,精准定位终止词前的内容。推荐使用REGEXP_EXTRACT(单匹配场景更高效):

REGEXP_EXTRACT(PROD, '^(.+?)\\s*(?:TAB|LAB|RAB)\\b') as AB

如果坚持用REGEXP_EXTRACT_ALL,取数组第一个元素即可:

REGEXP_EXTRACT_ALL(PROD, '^(.+?)\\s*(?:TAB|LAB|RAB)\\b')[0] as AB

正则解释

  • ^:匹配字符串开头,确保从最左侧开始提取
  • (.+?):非贪婪匹配任意字符,捕获到分组1(核心提取内容),避免贪婪匹配过度捕获终止词
  • \\s*:匹配终止词前可能存在的空格(兼容带空格或不带空格的场景)
  • (?:TAB|LAB|RAB):非捕获组,匹配三个目标终止词中的任意一个,不占用捕获分组
  • \\b:单词边界,确保匹配完整的终止词,避免误匹配包含这些字符串的其他单词

测试结果

对你的输入数据执行后,会得到预期输出:

"GLASS VERT"
"GLASS ROUGE"
"GLASS JAUNE VERT"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:56:13