我该如何foobar替换foo123bar?
foobar
foo123bar
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar') 'J3bar'
这有效:
>>> re.sub(r'(foo)', r'\1hi', 'foobar') 'foohibar'
我认为当有类似的东西时这是一个常见的问题\number。谁能给我一个关于如何处理这个问题的提示?
\number
答案是:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
文档的相关摘录:
除了如上所述的字符转义和反向引用之外,\g 将使用与名为 name 的组匹配的子字符串,如 (?P…) 语法所定义。\g 使用对应的组号;\g<2> 因此等价于\2,但在诸如\g<2>0 的替换中是不明确的。\20 将被解释为对组 20 的引用,而不是对组 2 后跟文字字符“0”的引用。反向引用 \g<0> 替换 RE 匹配的整个子字符串。