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

Snowflake正则替换:指定首尾区间内大写单词替换为(NAME)

Snowflake正则替换:将指定区域内容替换为(NAME)

直接用目标文本的固定前后段作为锚点,精准定位要替换的名字部分,以下是可行的写法:

SELECT REGEXP_REPLACE(
    'Transfer From MR JOE JOE to PayID Phone CREDIT TO ACCOUNT',
    '^(Transfer From ).*?( to PayID Phone CREDIT TO ACCOUNT)$',
    '\\1(NAME)\\2'
);

执行后就能得到你想要的输出:Transfer From (NAME) to PayID Phone CREDIT TO ACCOUNT

原代码问题分析

你之前的正则用了多个独立的捕获组((.*Transfer From)|(CREDIT TO ACCOUNT)|\b([A-Z]{1,})\b|(\b(to \w+\w+)\b)),每个组匹配到内容后都会触发替换规则,导致所有大写单词、前后固定段都被拆分替换,才出现了一堆(NAME)的错误输出。

优化思路

  1. 用^和$锚定整个字符串,确保只处理符合开头结尾规则的文本
  2. 把“Transfer From ”作为第一个捕获组,“ to PayID Phone CREDIT TO ACCOUNT”作为第二个捕获组
  3. 中间用.*?非贪婪匹配名字部分,确保只替换“Transfer From ”到“ to ”之间的内容

如果名字部分是固定格式的大写单词(比如最多3个词),也可以用更精准的匹配:

SELECT REGEXP_REPLACE(
    'Transfer From MR JOE JOE to PayID Phone CREDIT TO ACCOUNT',
    '^(Transfer From )[A-Z]+ [A-Z]+ [A-Z]+( to PayID Phone CREDIT TO ACCOUNT)$',
    '\\1(NAME)\\2'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:47:15