正则表达式提取
⚠️
regexextract
在 MongoDB、SQLite 和 SQL Server 中不可用。对于 Druid,regexextract
仅适用于 Druid-JDBC 驱动。
regexextract
使用 正则表达式 (regex) 来获取您的文本的特定部分。
regexextract
对于结构简单或无结构的文本非常理想,例如 URL 或自由形式的调查响应。如果您处理的是具有可预测格式的字符串,如 SKU 号码、ID 或其他类型的代码,请考虑更简单的 substring 表达式。
使用 regexextract
创建自定义列,以便使用更短、更易读的标签,例如
- 筛选下拉菜单,
- 图表标签,或
- 嵌入参数。
语法 | 示例 |
---|---|
regexextract(text, 正则表达式) |
regexextract("regexextract", "ex(.*)") |
使用正则表达式获取您的文本的特定部分。 | “extract” |
搜索和清理文本
假设您拥有包含大量不同 URL 的网络数据,您希望将每个 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
的dataframe列中
df['Campaign Name'] = df['URL'].str.extract(r'^[^?#]+\?utm_campaign=(.*)')
与Metabase的regexextract
表达式执行相同操作
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
进一步阅读
阅读其他Metabase版本的文档。