當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python re.sub用法及代碼示例


用法:

re.sub(pattern, repl, string, count=0, flags=0)

返回通過替換 repl 替換 string 中最左邊的非重疊出現的 pattern 獲得的字符串。如果未找到該模式,則 string 原樣返回。 repl可以是字符串,也可以是函數;如果它是一個字符串,則處理其中的任何反斜杠轉義。也就是說,\n 被轉換為單個換行符,\r 被轉換為回車,等等。 ASCII 字母的未知轉義保留供將來使用並視為錯誤。其他未知的轉義例如 \& 將被單獨留下。反向引用(例如 \6 )被替換為模式中第 6 組匹配的子字符串。例如:

>>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',
...        r'static PyObject*\npy_\1(void)\n{',
...        'def myfunc():')
'static PyObject*\npy_myfunc(void)\n{'

如果 repl 是一個函數,則在 pattern 的每個非重疊出現時調用它。該函數采用單個匹配對象參數,並返回替換字符串。例如:

>>> def dashrepl(matchobj):
...     if matchobj.group(0) == '-': return ' '
...     else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'
>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)
'Baked Beans & Spam'

模式可以是字符串或模式對象。

可選參數count 是要替換的模式出現的最大數量; count 必須是非負整數。如果省略或為零,將替換所有匹配項。僅當與前一個空匹配不相鄰時,才會替換模式的空匹配,因此 sub('x*', '-', 'abxd') 返回 '-a-b--d-'

在 string-type repl 參數中,除了上述字符轉義和反向引用之外,\g<name> 將使用由名為 name 的組匹配的子字符串,如 (?P<name>...) 語法所定義。 \g<number>使用對應的組號;因此 \g<2> 等價於 \2 ,但在 \g<2>0 等替代品中並沒有歧義。 \20 將被解釋為對第 20 組的引用,而不是對第 2 組的引用,後跟文字字符 '0' 。反向引用 \g<0> 替換了 RE 匹配的整個子字符串。

在 3.1 版中更改:添加了可選的標誌參數。

在 3.5 版中更改:不匹配的組將替換為空字符串。

在 3.6 版中更改:未知的逃脫pattern包含由...組成'\'現在一個 ASCII 字母是錯誤的。

在 3.7 版中更改:未知的逃脫repl包含由...組成'\'現在一個 ASCII 字母是錯誤的。

在 3.7 版中更改:當與先前的非空匹配相鄰時,模式的空匹配將被替換。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 re.sub。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。