2017-07-14 48 views
-1

我目前正在學習Python中的正則表達式,並且我對什麼正則表達式真正匹配感到困惑。例如,'\\'實際上是'\',那麼如果我需要匹配字符串'abc\\cde'中的'\'呢? re.findall(r'\', '010\\aa')根本不起作用。謝謝你的幫助。Python:正則表達式是否匹配轉義序列?

+0

're.findall(R '\\', '010 \\ AA')' –

+0

你不能有一個原始字符串尾部的反斜槓:https://開頭計算器.com/questions/647769/why-cant-pythons-raw-string-literals-end-with-a-single-backslash – jonrsharpe

+0

Pythex 是嘗試使用正則表達式的好方法,看看有什麼作用。 – SNygard

回答

0

正如其他人所說,\是一個字符,你仍然需要在原始字符串逃脫:

re.findall(r'\\', '010\\aa') 

注意r'\\'是長度爲2的字符串,包含反斜槓,而不是一個,不像'\\' 。這在https://docs.python.org/2.0/ref/strings.html的底部進行了描述。

+0

'len(r'\ x07')'是4個字符,所以它不等於''\ a''。我認爲正則表達式庫正在做自己的轉換,以便它可以匹配''\ a''。 – aaronm04

+0

Python在分析原始文字時拒絕刪除轉義,這是愚蠢的。 – sln

0

你總是需要逃避字符串中的分隔符。
由於語言需要解析轉義分隔符,因此需要解析轉義本身。

這是語言源字符串解析甚至原始字符串的事實。

例子:

' => r'\'' 
\' => r'\'' 
\\' => r'\\\''