Looker Studio 中的規則運算式

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

函式說明
REGEXP_CONTAINS 如果輸入值包含規則運算式模式,則傳回 true,否則傳回 false。

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

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

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

進一步瞭解「REGEXP_REPLACE

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

建構規則運算式可能很複雜。使用 Regexp 函式前,請先考慮使用較簡單的文字函式是否能達成目標。下列函式提供類似於規則運算式的函式,不需要瞭解規則運算式語法。

函式 說明
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 示範帳戶中,將這個規則運算式套用至「廣告活動」維度,會得到下列結果:

廣告活動 語言
廣告活動 #1 其他語言
1000549 | Google Analytics 示範 | DR | apontes | NA | US | en | Hybrid | AW SEM | BKWS | ~ AW - Google Brand (US) 英文
1000549 | Google Analytics Demo | 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」將與下列字串達成比對:10100、10x

「^10」無法與下列字串達成比對:1 10 、1 10 x

範例
$ 會比對結尾與符號鄰接字元一致的字串。 「10$」將與下列字串達成比對:110、1010

「10$」無法與「100」或「10x」達成比對。

範例

群組

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

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

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

範例
[ ] 會比對出 [ ] 括號內字元按任意順序排列的字串 (字元位在字串何處不造成影響)。 「[10]」將與下列字串達成比對:012、120、210

範例
- 會建立括號中的字元範圍,以比對字串中的任一部分。 「[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")