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 表達式的工作方式相同,並附註如何為您的使用案例選擇最佳選項。

Metabase 表達式

其他工具

Substring

當您想要搜尋格式一致的文字(字元數相同,且這些字元的相對順序相同)時,請使用substring

例如,您將無法使用 substringURL 範例資料中取得查詢參數,因為 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 版本的文件。