正規表示式
![]() |
根據正規表示式篩選輸入字串元素。也可能會根據比對群組轉換它們。
範例
在以下範例中,我們使用文字字串的 PCollection
建立管線。然後,我們使用 Regex
轉換,透過正規表示式來搜尋、取代和分割文字元素。
您可以使用工具來協助您建立和測試正規表示式,例如 regex101。請務必在左側邊欄中指定 Python 風格。
讓我們看看例如 正規表示式 (?P<icon>[^\s,]+), *(\w+), *(\w+)
。它會比對任何不是空白字元 \s
([ \t\n\r\f\v]
) 或逗號 ,
的任何字元,直到找到逗號為止,並將其儲存在名為 icon
的群組中,這甚至可以比對 utf-8
字串。然後,它會比對任何數量的空白字元,後接至少一個單字字元 \w
([a-zA-Z0-9_]
),該字元會儲存在第二個群組中作為名稱。它對第三個群組執行相同的操作,以取得持續時間。
注意:為避免正規表示式中出現意外的字串跳脫,建議使用 原始字串,例如
r'原始字串'
,而不是'跳脫字串'
。
範例 1:正規表示式比對
Regex.matches
只會保留符合正規表示式的元素,並傳回比對的群組。預設情況下,引數 group
設定為 0
(整個比對),但可以設定為群組編號,例如 3
,或設定為具名群組,例如 'icon'
。
Regex.matches
會從字串的開頭開始比對正規表示式。若要比對到字串結尾,請在正規表示式結尾加上 '$'
。
若要從任何點開始比對,而不是從字串開頭,請使用 Regex.find(regex)
。
範例 2:具有所有群組的正規表示式比對
Regex.all_matches
只會保留符合正規表示式的元素,並以清單形式傳回所有群組。群組會依照在正規表示式中遇到的順序傳回,包括 group 0
(整個比對) 作為第一個群組。
Regex.all_matches
會從字串的開頭開始比對正規表示式。若要比對到字串結尾,請在正規表示式結尾加上 '$'
。
若要從任何點開始比對,而不是從字串開頭,請使用 Regex.find_all(regex, group=Regex.ALL, outputEmpty=False)
。
範例 3:正規表示式比對成鍵值對
Regex.matches_kv
只會保留符合正規表示式的元素,並使用指定的群組傳回鍵值對。引數 keyGroup
會設定為群組編號,例如 3
,或設定為具名群組,例如 'icon'
。預設情況下,引數 valueGroup
設定為 0
(整個比對),但可以設定為群組編號,例如 3
,或設定為具名群組,例如 'icon'
。
Regex.matches_kv
會從字串的開頭開始比對正規表示式。若要比對到字串結尾,請在正規表示式結尾加上 '$'
。
若要從任何點開始比對,而不是從字串開頭,請使用 Regex.find_kv(regex, keyGroup)
。
範例 4:正規表示式尋找
Regex.find
只會保留符合正規表示式的元素,並傳回比對的群組。預設情況下,引數 group
設定為 0
(整個比對),但可以設定為群組編號,例如 3
,或設定為具名群組,例如 'icon'
。
Regex.find
會比對字串中第一個符合正規表示式的位置。若要從頭開始比對,請在正規表示式的開頭加上 '^'
。若要比對到字串結尾,請在正規表示式的結尾加上 '$'
。
如果您只需要從頭開始比對,請考慮使用 Regex.matches(regex)
。
範例 5:正規表示式尋找全部
Regex.find_all
會回傳一個包含所有符合正規表示式的比對結果的列表,並回傳符合的群組。引數 group
預設為 0
,但可以設定為群組編號,例如 3
,或具名群組,例如 'icon'
,或設定為 Regex.ALL
以回傳所有群組。引數 outputEmpty
預設為 True
,但可以設定為 False
以跳過找不到比對結果的元素。
Regex.find_all
會比對字串中任何符合正規表示式的位置。若要從頭開始比對,請在正規表示式的開頭加上 '^'
。若要比對到字串結尾,請在正規表示式的結尾加上 '$'
。
如果您只需要從頭開始比對所有群組,請考慮使用 Regex.all_matches(regex)
。
範例 6:正規表示式尋找成鍵值對
Regex.find_kv
會回傳一個包含所有符合正規表示式的比對結果的列表,並使用指定的群組回傳鍵值對。引數 keyGroup
可以設定為群組編號,例如 3
,或具名群組,例如 'icon'
。引數 valueGroup
預設為 0
(整個比對結果),但可以設定為群組編號,例如 3
,或具名群組,例如 'icon'
。
Regex.find_kv
會比對字串中第一個符合正規表示式的位置。若要從頭開始比對,請在正規表示式的開頭加上 '^'
。若要比對到字串結尾,請在正規表示式的結尾加上 '$'
。
如果您只需要從頭開始比對鍵值對,請考慮使用 Regex.matches_kv(regex)
。
範例 7:正規表示式全部取代
Regex.replace_all
會回傳一個字串,其中所有符合正規表示式的位置都已被另一個字串取代。您也可以在 replacement
中使用反向參照。
範例 8:正規表示式取代第一個
Regex.replace_first
會回傳一個字串,其中第一個符合正規表示式的位置已被另一個字串取代。您也可以在 replacement
中使用反向參照。
範例 9:正規表示式分割
Regex.split
會回傳一個字串列表,這些字串是被指定的正規表示式所分隔的。引數 outputEmpty
預設為 False
,但可以設定為 True
以保留輸出列表中空的項目。
相關轉換
![]() |
上次更新於 2024/10/31
您是否找到了您想要的一切?
內容是否實用且清楚?是否有任何您想更改的地方?請告訴我們!