理解Python中正则表达式的原始字符串

Tan*_*guy 2 python regex newline rawstring

我有很多充满换行符的文本文件,我正在 python 3.4 中解析它们。我正在寻找换行符,因为它们将我的文本分成不同的部分。这是一个文本示例:

\n\n
text = \'avocat  ;\\n\\n       m. x\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我 na\xc3\xafvely 开始在正则表达式(RE)中寻找带有 \' \\n\' 的换行符,而不认为反斜杠 \' \\\' 是转义字符。然而,事实证明这工作得很好:

\n\n
>>> import re\n\n>>> pattern1 = \'\\n\\n\'\n>>> re.findall(pattern1, text)\n[\'\\n\\n\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,我明白我应该使用双反斜杠来寻找一个反斜杠。这也运行得很好:

\n\n
>>> pattern2 = \'\\\\n\\\\n\'\n>>> re.findall(pattern2, text)\n[\'\\n\\n\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在另一个线程上,我被告知使用原始字符串而不是常规字符串,但这种格式无法找到我正在寻找的换行符:

\n\n
>>> pattern3 = r\'\\\\n\\\\n\'\n>>> pattern3\n\'\\\\\\\\n\\\\\\\\n\'\n>>> re.findall(pattern3, text)\n[]\n
Run Code Online (Sandbox Code Playgroud)\n\n

你能帮我一下吗?我有点困惑我应该使用什么 RE 之王才能正确匹配换行符。

\n

Big*_*her 5

使用原始字符串时不要使用双反斜杠:

>>> pattern3 = r'\n\n'
>>> pattern3
'\\n\\n'
>>> re.findall(pattern3, text)
['\n\n']
Run Code Online (Sandbox Code Playgroud)