代码是:
import re
p = r'\d\d\d'
s = '123'
但是:
re.sub(p,'abc\n',s)
re.sub(p,r'abc\n',s)
给出相同的结果,即'abc \ n'。我没想到第二行有这个结果。我以为它应该是'abc \ n'。我去了Python doc,它说:
re.sub(pattern,repl,string [,count,flags])
... repl可以是字符串或函数;如果它是一个字符串,则处理其中的任何反斜杠转义。也就是说,\ n被转换为单个换行符,\ r \ n被转换为换行符,依此类推......
那么为什么re.sub有这个奇怪的功能呢?我的意思是,如果反向逃逸,原始字符串和普通字符串是否应该总是给出不同的结果?
答案 0 :(得分:0)
重要的部分是
处理中的任何反斜杠转义。
这意味着,无论您传递'abc\n'
还是'abc\\n'
都没关系,因为正则表达式引擎会将后者转换为前者无论如何。