为什么re.sub进程反斜杠逃脱

时间:2011-06-16 12:44:27

标签: python-3.x

代码是:

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有这个奇怪的功能呢?我的意思是,如果反向逃逸,原始字符串和普通字符串是否应该总是给出不同的结果?

1 个答案:

答案 0 :(得分:0)

重要的部分是

  

处理中的任何反斜杠转义。

这意味着,无论您传递'abc\n'还是'abc\\n'都没关系,因为正则表达式引擎会将后者转换为前者无论如何