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

BigQuery中Regexp_contains无法检测重复4次以上字符的问题求助

解决REGEXP_CONTAINS无法识别连续重复字符的问题

你的正则r'(.)\1{3,}'逻辑本身没问题——它用来匹配任意连续出现4次及以上的字符(首字符+重复3次),但无法识别ART00000000这类字符串,核心原因是不同SQL引擎对正则语法的支持存在差异,比如部分引擎不支持\1反向引用,或者需要调整语法格式。

以下是针对主流SQL引擎的修正方案:

  • BigQuery:
    BigQuery的REGEXP_CONTAINS支持反向引用,若原语句失效,可尝试覆盖所有字符类型的写法(避免因字符类型匹配遗漏导致的问题):

    SELECT REGEXP_CONTAINS('ART00000000', r'([\s\S])\1{3,}') AS has_repeated_chars;
    
  • MySQL:
    MySQL的正则函数不支持\1这类反向引用,可改用两种方式实现:

    1. 直接写重复匹配规则(适用于MySQL 8.0+的REGEXP_LIKE):
      SELECT REGEXP_LIKE('ART00000000', '(.)\\1\\1\\1') AS has_repeated_chars;
      
    2. 通过替换重复字符后对比长度判断:
      SELECT CHAR_LENGTH('ART00000000') != CHAR_LENGTH(REGEXP_REPLACE('ART00000000', '(.)\\1+', '\\1')) AS has_repeated_chars;
      
  • PostgreSQL:
    PostgreSQL的~操作符完全支持反向引用,直接使用原正则即可(注意无需额外转义):

    SELECT 'ART00000000' ~ '(.)\1{3,}' AS has_repeated_chars;
    

如果你的需求是识别连续重复超过4次(即5次及以上),只需将正则中的{3,}修改为{4,},即r'(.)\1{4,}'。

内容的提问来源于stack exchange,提问作者André Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:25