我想确保 的repl参数re.sub是转义,以便\1不会解释任何特殊序列:
>>> repl = r'\1'
>>> re.sub('(X)', repl, 'X')
'X'
>>> re.sub('(X)', desired_escape_function(repl), 'X')
'\\1'
Run Code Online (Sandbox Code Playgroud)
有没有可以做到这一点的功能?我知道re.escape存在,应该使用它吗?
请勿re.escape用于此目的。re.escape意在用于pattern论证中,而不是用于repl论证中。
相反,请遵循Python 文档的建议,只需手动将所有反斜杠替换为两个反斜杠:
>>> repl = r'\1'
>>> re.sub('(X)', repl.replace('\\', '\\\\'), 'X')
'\\1'
Run Code Online (Sandbox Code Playgroud)