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

求助:在BigQuery中使用REGEXP_CONTAINS匹配特定格式表名的正确正则表达式

解决BigQuery中REGEXP_CONTAINS匹配三部分下划线分隔表名的问题

让我帮你排查下问题——你想要匹配由三个字母数字单词通过下划线分隔的表名,目前的正则没返回结果,核心问题出在正则表达式的最后一部分上。

原正则的问题

你写的正则是:

^([[:alnum:]]+_[[:alnum:]]+_[[:alnum:]])$

这里最后一个[[:alnum:]]没有添加+限定符,它只能匹配单个字母数字字符,但你需要的是一个完整的单词(多个字符),这就导致那些符合单词1_单词2_单词3格式的表名(比如Customer_Order_2024)因为第三个单词长度大于1,无法被匹配到。

修正后的正则与查询语句

把最后一个[[:alnum:]]改成[[:alnum:]]+,同时可以去掉不必要的捕获括号(因为你不需要提取分组内容,只需要整体匹配),修正后的查询语句如下:

SELECT table_name as tablenames 
FROM project.dataset.INFORMATION_SCHEMA.TABLES 
WHERE REGEXP_CONTAINS(table_name, '^[[:alnum:]]+_[[:alnum:]]+_[[:alnum:]]+$')

额外说明

  • BigQuery的REGEXP_CONTAINS采用RE2正则语法,[[:alnum:]]确实能正确匹配字母(大小写)和数字,符合你的需求。
  • 这个正则会严格匹配:开头到结尾只有三个字母数字单词,且单词之间用单个下划线分隔,不会匹配少于或多于三个部分的表名,也不会匹配单词中包含下划线的表名(比如User_Profile_Admin_Logs这种四部分的就会被排除)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:08:11