正規表示式

Pydoc Pydoc




根據正規表示式篩選輸入字串元素。也可能會根據比對群組轉換它們。

範例

在以下範例中,我們使用文字字串的 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 以保留輸出列表中空的項目。

Pydoc Pydoc