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

如何在BigQuery中移除字符串中紧邻重复的子串

在BigQuery中移除紧邻重复的单词/短语

你的正则无法生效的核心问题有两个:

  1. 原正则([ \\w]+)\\1要求重复部分和捕获组完全一致(包括末尾空格),但实际场景中重复短语是用空格分隔的(比如big black dog big black dog里,第一个短语末尾无空格,第二个短语前有空格),导致匹配失败。
  2. 正则未考虑换行等空白字符,你的字符串里存在换行分隔的重复(比如friendly \n friendly),\\w和普通空格匹配无法覆盖这种情况。

正确解法

下面的代码可以精准匹配并移除所有紧邻重复的单词或多词短语,同时处理换行、多次重复等场景:

with text as (
  select "The big black dog big black dog is a friendly 
        friendly dog who who lives nearby nearby" as phrase
)

select 
  -- 两次嵌套替换,处理单次和多次重复(如dog dog dog → dog)
  REGEXP_REPLACE(
    REGEXP_REPLACE(phrase, r'(\\b(?:\\w+\\s+)*\\w+\\b)\\s+\\1', r'\\1'),
    r'(\\b(?:\\w+\\s+)*\\w+\\b)\\s+\\1',
    r'\\1'
  ) as cleaned_phrase
from text

正则逻辑拆解

  • \\b:单词边界,确保捕获完整的单词/短语,避免部分字符误匹配(比如dogdogs不会被当成重复)
  • (?:\\w+\\s+)*:非捕获组,匹配「单词+任意空白」的组合零次或多次,支持捕获多单词短语
  • \\w+:匹配单个单词
  • \\s+:匹配任意数量的空白字符(空格、换行、制表符都覆盖)
  • \\1:引用之前捕获的短语,替换时只保留一次实例

输出结果

运行后得到目标字符串:

The big black dog is a friendly dog who lives nearby

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39