我怎么能代替foobar用foo123bar?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
Run Code Online (Sandbox Code Playgroud)
这有效:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
Run Code Online (Sandbox Code Playgroud)
我认为这是一个常见的问题\number.任何人都可以给我一个如何处理这个问题的提示吗?
在正则表达式替换模式中,反向引用看起来像\1.如果要在该反向引用后包含一个数字,这将失败,因为该数字被认为是反向引用号的一部分:
# replace all twin digits by zeroes, but retain white space in between
re.sub(r"\d(\s*)\d", r"0\10", "0 1")
>>> sre_constants.error: invalid group reference
Run Code Online (Sandbox Code Playgroud)
替换模式r"0\1 0"可以正常工作,但在失败的示例中,反向引用\1被解释为\10.
如何将数字'0'与\1之前的反向引用分开?