Regexextract
⚠️
regexextract
不适用于 MongoDB、SQLite 和 SQL Server。对于 Druid,regexextract
仅适用于 Druid-JDBC 驱动程序。
regexextract
使用正则表达式 (regex) 来获取文本的特定部分。
regexextract
非常适合几乎没有结构的文本,例如 URL 或自由格式的调查回复。如果您正在处理格式可预测的字符串,例如 SKU 编号、ID 或其他类型的代码,请查看更简单的 substring 表达式。
使用 regexextract
创建自定义列,为以下内容提供更短、更易读的标签:
- 筛选器下拉菜单,
- 图表标签,或
- 嵌入参数。
语法 | 示例 |
---|---|
regexextract(text, regular_expression) |
regexextract("regexextract", "ex(.*)") |
使用正则表达式获取文本的特定部分。 | “extract” |
搜索和清理文本
假设您有大量不同 URL 的 Web 数据,并且想要将每个 URL 映射到更短、更易读的广告系列名称。
URL | 广告系列名称 |
---|---|
https://metabase.net.cn/docs/?utm_campaign=alice | alice |
https://metabase.net.cn/learn/?utm_campaign=neo | neo |
https://metabase.net.cn/glossary/?utm_campaign=candy | candy |
您可以使用以下表达式创建自定义列 **广告系列名称**
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
在此处,正则表达式模式 ^[^?#]+\?
匹配所有有效的 URL 字符串。您可以将 utm_campaign=
替换为您喜欢的任何查询参数。在正则表达式模式的末尾,捕获组 (.*)
获取查询参数 utm_campaign=
之后出现的所有字符。
现在,您可以在需要清晰标签的地方使用 **广告系列名称**,例如筛选器下拉菜单、图表和嵌入参数。
接受的数据类型
数据类型 | 适用于 regexextract |
---|---|
字符串 | ✅ |
数字 | ❌ |
时间戳 | ❌ |
布尔值 | ❌ |
JSON | ❌ |
限制
regexextract
不适用于 MongoDB、SQLite 和 SQL Server。对于 Druid,regexextract
仅适用于 Druid-JDBC 驱动程序。
正则表达式可能是一门黑魔法。您已被警告。
相关函数
本节介绍与 Metabase regexextract
表达式工作方式相同的函数和公式,并提供关于如何为您的用例选择最佳选项的说明。
其他工具
Substring
当您想要搜索格式一致(字符数相同,且这些字符的相对顺序相同)的文本时,请使用 substring。
例如,您将无法使用 substring
从 URL 示例数据 中获取查询参数,因为 URL 路径和参数名称的长度都可变。
但是,如果您想提取 https://www.
之后和 .com
之前的所有内容,您可以使用以下任一方法:
substring([URL], 13, 8)
或
regexextract([URL], "^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/.\n]+)")
SQL
当您使用 笔记本编辑器 运行问题时,Metabase 会将您的图形查询设置(筛选器、汇总等)转换为查询,并针对您的数据库运行该查询以获取结果。
如果我们的 示例数据 存储在 PostgreSQL 数据库中
SELECT
url,
SUBSTRING(url, '^[^?#]+\?utm_campaign=(.*)') AS campaign_name
FROM follow_the_white_rabbit
等效于 Metabase regexextract
表达式
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
电子表格
如果我们的 示例数据 在电子表格中,“URL”位于 A 列,则电子表格函数
regexextract(A2, "^[^?#]+\?utm_campaign=(.*)")
使用的语法与 Metabase 表达式几乎相同
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
Python
假设 示例数据 位于名为 df
的数据帧列中,
df['Campaign Name'] = df['URL'].str.extract(r'^[^?#]+\?utm_campaign=(.*)')
执行的操作与 Metabase regexextract
表达式相同
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
延伸阅读
阅读其他 Metabase 版本的文档。