Looker Studio 中的規則運算式

規則運算式 (regexp) 是成串按特定順序排列的字元,可廣泛或精確地與資料中的模式達成比對。您可以使用規則運算式,在圖表和控制項中建立更靈活的篩選器。您也可以在計算欄位公式中使用下列規則運算式函式:

函式說明
REGEXP_CONTAINS 如果輸入值含有規則運算式模式,則傳回「是」;否則傳回「否」。

進一步瞭解 REGEXP_CONTAINS
REGEXP_EXTRACT 傳回輸入值中,與規則運算式模式相符的第一個子字串。

進一步瞭解 REGEXP_EXTRACT
REGEXP_MATCH 如果輸入值符合規則運算式模式,則傳回「true」;否則傳回「false」。

進一步瞭解 REGEXP_MATCH
REGEXP_REPLACE 將輸入值中所有符合規則運算式模式的文字,替換為replacement 字串。

進一步瞭解 REGEXP_REPLACE

使用規則運算式的替代方案

建構規則運算式可能會很複雜。使用正規表示式函式前,請先考慮是否可以使用更簡單的文字函式來達成目標。以下函式提供類似於規則運算式的功能,您不必瞭解規則運算式語法。

函式 說明
CONTAINS_TEXT

如果指定文字出現在該欄位或運算式中,則傳回「True」;其他情況則傳回「False」。

ENDS_WITH

如果該欄位或運算式的結尾是指定文字,則傳回「True」;其他情況則傳回「False」。

LEFT_TEXT

傳回指定字串開頭前幾個位元組構成的子字串。

REPLACE 傳回原始文字的副本,並將所有出現的這段搜尋文字換成替代文字。
RIGHT_TEXT

傳回指定字串結尾的幾個字元。

STARTS_WITH

如果該欄位或運算式的開頭是指定文字,則傳回「True」;其他情況則傳回「False」。

TRIM

傳回已移除開頭和結尾空格的文字。

規則運算式範例

如果 MyField 包含空格字元,則比對:

REGEXP_CONTAINS(MyField, "\\s+")

擷取網址中的頂層目錄:

REGEXP_EXTRACT(URL, ^https://[^/]+/([^/]+)/)

舉例來說,如果 URL 欄位包含此網頁的地址,前述函式會傳回 looker-studio

依語言分類廣告活動:

CASE
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*en\s*\|.*") then "English"
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*es\s*\|.*") then "Spanish"
    ELSE "Other language"
END

舉例來說,將這個規則運算式套用至 Google Analytics 示範帳戶中的「Campaign」維度,會得到以下結果:

廣告活動 語言
廣告活動 #1 其他語言
1000549 | Google Analytics Demo | DR | apontes | NA | US | en | Hybrid | AW SEM | BKWS | ~ AW - Google 品牌 (美國) 英文
1000549 | Google Analytics 示範 | DR | apontes | NA | CA | es | Hybrid | AW SEM | BKWS | ~ AW - YouTube (CA) 西班牙文

交換字串中各部分的順序:

REGEXP_REPLACE(Campaign, R'(.*):(.*)', R'\2 \1')

在上述範例中,各個部分會以冒號 (:) 分隔。

中繼字元

中繼字元是指在規則運算式中具有特殊意義的字元。以下是一些常用的元字元。請注意,這些範例會在 Google Analytics 說明中心中開啟,但其中的資訊同樣適用於 Looker Studio。

萬用字元

字元說明範例
與任何單一字元 (字母、數字或符號) 比對。 1. 與 10、1A 相符

1.1 與 111、1A1 相符

示例
嗎? 會比對前接字元 0 或 1 次。 「10?」將與下列字串達成比對:1、10

示例
+ 會比對前接字元 1 或多次。 10+ 與 10、100 相符

示例
* 會比對前接字元 0 或多次。 「1*」與「1, 10」相符

示例
| 建立 OR 條件比對。

請勿在運算式結尾使用。
1|10 與 1、10 相符

示例

錨點

字元說明範例
^ 會比對開頭與符號鄰接字元相符的字串。 「^10」將與下列字串達成比對: 10 10 0、 10 x

「^10」無法與 1 10 、1 10 x

示例
$ 會比對結尾與符號鄰接字元一致的字串。 「10$」與「1 10 」、「10 10 」相符

「10$」無法與「10 0」、「10 x

示例

群組

字元說明範例
( ) 會比對出與 ( ) 括號內字元排列順序完全相符的字串 (字元位在字串何處不造成影響)。

也可用來將其他運算式分組。
「(10)」將與下列字串達成比對: 10 10 1、 10 11

([0-9]|[a-z]) 會比對任何數字或小寫字母

示例
[ ] 會比對出 [ ] 括號內字元按任意順序排列的字串 (字元位在字串何處不造成影響)。 [10] 與 01 2、1 20、2 10 相符

示例
- 會建立括號中的字元範圍,以比對字串中的任一部分。 「[0-9]」會與 0 到 9 之間的任一數字達成比對

示例

Esc 鍵

字元說明範例
\\

表示鄰接字元應視為常值,而非規則運算式中繼字元。

\\ 表示相鄰的圓點應視為句點或小數點,而非萬用字元。

216\\.239\\.32\\.34 與 216.239.32.34 相符

示例

角色類別

類別字元
\d 數字 (≡ [0-9])
\D 不是數字 (≡ [^0-9])
\s 空白字元 (≡ [\t\n\f\r ])
\S 不是空白字元 (≡ [^\t\n\f\r ])
\w 文字字元 (≡ [0-9A-Za-z_])
\W 不是字元 (≡ [^0-9A-Za-z_])

提示

使用簡單的運算式

請保持規則運算式簡潔扼要。簡潔的運算式有利於其他使用者解讀及修改。

區分大小寫

根據預設,規則運算式會區分大小寫。您可以使用 (?i) 標記,讓比對不區分大小寫。舉例來說,這個運算式會同時擷取「abc123」和「ABC123」:

REGEXP_EXTRACT(MyField, '(?i)(a.*)')

逸出反斜線字元

如果要編寫包含反斜線字元的篩選器條件,請使用第二個反斜線字元逸出反斜線字元。

例如,下列運算式會檢查欄位是否包含字串 green\yellow

REGEXP_CONTAINS(field_name, "green\\yellow")

您也可以在運算式前方加上原始字串文字前置字串 R。如此一來,您就不需要逸出反斜線等特殊字元。上述範例可改寫為以下等效的內容:

REGEXP_CONTAINS(field_name, R"green\yellow")