規則運算式 (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")