如何在bigquery中获取字符串中正则表达式的匹配数?

Posted

技术标签:

【中文标题】如何在bigquery中获取字符串中正则表达式的匹配数?【英文标题】:How to get count of matches of a regexp in a string in bigquery? 【发布时间】:2019-03-07 18:44:51 【问题描述】:

如何在 bigquery 中获取字符串中正则表达式的匹配数?我不认为 bigquery sql 支持 regexp_count。

因此,例如,您可能希望在“foo1 foo foo40”之类的字符串中计算“foo*”的匹配数,它会返回计数 2(在这种情况下,我的意思是“*”必须是非空字符串)。

谢谢!

【问题讨论】:

【参考方案1】:

以下是 BigQuery 标准 SQL

您可以使用 array_length 和 regexp_extract_all 的组合,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
SELECT "foo1 foo foo40" str
)
SELECT array_length(regexp_extract_all(str, r'foo[^\s]')) matches
FROM `project.dataset.table`   

【讨论】:

啊,太好了 - @MikhailBerlyant 如果你有一个短语列表phrase1、phrase2 等,并且你想获得给定字符串中每个短语的计数,该怎么办?

以上是关于如何在bigquery中获取字符串中正则表达式的匹配数?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 正则表达式从字符串中删除/替换文本列表

java-正则表达式

BigQuery:字符串后的正则表达式

BigQuery 正则表达式提取

在 Bigquery 中看到“数字 + 一个字母 + [逗号或空格]”后提取字符串的正则表达式

如何在 bigquery 中使用带有 JSON EXTRACT 的正则表达式