簡體   English   中英

理解python中正則表達式的原始字符串

[英]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 '

這就是為什么pattern1pattern2在上一個示例中匹配我的文本的原因。 但是, pattern3在已解釋的文本中查找' \\\\n ',在規范的字符串表示形式中實際上是' \\\\\\\\n '。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM