[英]understanding raw string for regular expressions in python
我有很多充滿換行符的文本文件,這些文件在python 3.4中進行解析。 我正在尋找換行符,因為它們將我的文本分為不同的部分。 這是一個文本示例:
text = 'avocat ;\n\n m. x'
我天真地開始在正則表達式(RE)中尋找帶有' \\n
'的換行符,而沒有想到反斜杠' \\
'是轉義字符。 但是,事實證明可以正常工作:
>>> import re
>>> pattern1 = '\n\n'
>>> re.findall(pattern1, text)
['\n\n']
然后,我了解到我應該使用雙反斜杠以查找一個反斜杠。 這也很好:
>>> pattern2 = '\\n\\n'
>>> re.findall(pattern2, text)
['\n\n']
但是在另一個線程上 ,有人告訴我使用原始字符串而不是常規字符串,但是這種格式無法找到我要查找的換行符:
>>> pattern3 = r'\\n\\n'
>>> pattern3
'\\\\n\\\\n'
>>> re.findall(pattern3, text)
[]
你能幫我一下嗎? 我對於應該正確使用換行符的RE之王感到有些困惑。
使用原始字符串時,請勿將反斜杠加倍:
>>> pattern3 = r'\n\n'
>>> pattern3
'\\n\\n'
>>> re.findall(pattern3, text)
['\n\n']
好,我知道了。 ' \\n
' ' \\\\n
'". 在這個漂亮的Python regex備忘單中,它說:“ ' \\n
' ' \\\\n
' 。
這就是為什么pattern1
和pattern2
在上一個示例中匹配我的文本的原因。 但是, pattern3
在已解釋的文本中查找' \\\\n
',在規范的字符串表示形式中實際上是' \\\\\\\\n
'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.