2017-06-22 119 views
0

需要帮助解释字符串前缀和转义字符。我在下面学习re.compile()命令的参数时发现了这个问题。Python中的字符串前缀和转义字符

a = re.compile(r'^([a-z]|_)*$') 
b = re.compile(r'^([a-z]|_)*:([a-z]|_)*$') 
c = re.compile(r'[=\+/&<>;\'"\?%#[email protected]\,\. \t\r\n]') 
  1. 什么是r意思?
  2. 什么意思是\'\?\,\.
  3. \t\r\n是什么意思?
+3

我的意思不是粗鲁,但你的问题与're.compile()'无关,所以难怪你看到的文档没有帮助。你看错了地方。你在问[字​​符串前缀](https://docs.python.org/3.5/reference/lexical_analysis.html#string-and-bytes-literals)和[转义字符](https://docs.python.org /3.5/reference/lexical_analysis.html#string-and-bytes-literals)。 –

+0

啊是的..对不起..编辑标题.. – Lam

+0

在文档中解释https://docs.python.org/2/library/re.html – lkdhruw

回答

1

r是什么意思?

这是raw字符串文字的前缀。从本质上来说,它可以防止正常逃逸发生,留在反斜杠中。这里给出了更深入的解释:https://stackoverflow.com/a/2081708/416500

\',\ ?, \,和。是什么意思?

这些都是由反斜杠逃脱正则表达式特定的字符。该\?告诉它寻找一个文字?,该\,告诉它寻找一个文字,\.告诉它寻找一个文字.

\ t \ r \ n是什么意思?

\t是制表符,\r是一个回车,\n是换行字符。这些在大多数程序中都以空格形式呈现,但存储方式不同。

一个方便的工具,用于打破正则表达式模式我用了很多是Regex Pal(无隶属关系),它让你悬停在正则表达式的部分,看看它是如何编译的。

+0

非常感谢您的帮助!欣赏它! – Lam