Regexextract
⚠️
regexextract
不適用於 MongoDB、SQLite 和 SQL Server。對於 Druid,regexextract
僅適用於 Druid-JDBC 驅動程式。
regexextract
使用正規表示式 (regex) 來取得文字的特定部分。
regexextract
非常適合用於幾乎沒有結構的文字,例如 URL 或自由格式的問卷回覆。如果您要處理格式可預測的字串,例如 SKU 號碼、ID 或其他類型的代碼,請改為查看更簡單的substring 表達式。
使用 regexextract
建立自訂欄位,為以下項目提供更短、更易讀的標籤:
- 篩選下拉式選單、
- 圖表標籤,或
- 嵌入參數。
語法 | 範例 |
---|---|
regexextract(文字, 正規表示式) |
regexextract("regexextract", "ex(.*)") |
使用正規表示式取得文字的特定部分。 | “extract” |
搜尋與清理文字
假設您有包含許多不同 URL 的網頁資料,而且您想要將每個 URL 對應到更短、更易讀的廣告活動名稱。
URL | 廣告活動名稱 |
---|---|
https://metabase.dev.org.tw/docs/?utm_campaign=alice | alice |
https://metabase.dev.org.tw/learn/?utm_campaign=neo | neo |
https://metabase.dev.org.tw/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 版本的文件。