規則運算式是成串按特定順序排列的字元,可廣泛或精確地與資料模式達成比對。您可以使用規則運算式,在圖表和控制項中建立更靈活的篩選器。您也可以在計算欄位公式中使用下列規則運算式函式:
函式 | 說明 |
---|---|
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」將與下列字串達成比對:10、100、10x 「^10」無法與下列字串達成比對:1 10 、1 10 x 範例 |
$ | 會比對結尾與符號鄰接字元一致的字串。 | 「10$」將與下列字串達成比對:110、1010 「10$」無法與「100」或「10x」達成比對。 範例 |
群組
字元 | 說明 | 範例 |
---|---|---|
( ) | 會比對出與 ( ) 括號內字元排列順序完全相符的字串 (字元位在字串何處不造成影響)。 也可用來將其他運算式分組。 | 「(10)」將與下列字串達成比對:10、101、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")