由于最近在使用re库时遇到bug,深入研究了一下。关于raw string的文章网上也很多,在此摘录一些要点:
raw string,也就是经常在正则表达式和Windows路径中见到的前面带个r的字符串,比如r'C:\Windows'
- raw string设计宗旨:简化正则表达式中过多的反斜线
\
,以及用于表示Windows的路径(后者并不推荐) - 作用:字符串前加r,用于防止转义(使得字符串中的转义字符不被作为转义字符看待),比如
r'C:\netfolder\'
中的\n
就不会被当作换行;
或者,可以理解为r是把\n
变成了\\n
:经实测,r'\n' == '\\n'
,结果为 True - raw string是语法(syntax),不是一种特殊类型
-
若字符串中没有转义字符,则有r没r没有区别:比如\n是转义字符、但是\l和\q不是,因此
r'\n' == '\n'
为 False,但r'\z' == '\z'
为 True
ASCII转义字符表:https://blog.csdn.net/qq_23274715/article/details/102594914
参考文献:
https://stackoverflow.com/a/2081708/5093308 (推荐)
http://blog.sina.com.cn/s/blog_6a6c136d0102wzrj.html
https://www.journaldev.com/23598/python-raw-string
https://docs.python.org/3/reference/lexical_analysis.html#string-literals