当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。