造成混淆的原因是反斜杠字符
在两个不同的级别上用作转义符。首先,Python解释器本身会在re模块看到您的字符串之前执行的替换。例如,
n将其转换为换行符,
t将其转换为制表符,等等。要获得实际的字符,您也可以对其进行转义,从而
\给出一个字符。如果后面的字符不是公认的转义字符,则该字符会像其他任何字符一样被处理并通过,但是我不建议以此为依据。相反,请始终通过将字符加倍来逃脱字符,即
\。
如果要查看Python如何扩展字符串转义符,只需打印出字符串即可。例如:
s = 'a\btc'print(s)
如果
s是集合数据类型(例如列表或元组)的一部分,并且如果您打印该集合,Python会将字符串用单引号引起来,并将转义符(以规范形式)包括在内,因此请注意字符串的用法正在打印。如果仅在解释器中输入带引号的字符串,它还将显示用引号引起来的转义符。
一旦知道了字符串的编码方式,便可以考虑
re模块将如何处理它。例如,如果要转义到传递给
re模块的字符串中,则需要传递
\给
re,这意味着您需要
\\在带引号的Python字符串中使用。Python字符串将以结尾,
\并且
re模块会将其视为单个文字字符。在Python字符串中包含字符的另一种方法是使用原始字符串,例如
r'ab'等效于
"a\b"。



