2016-11-22 98 views
-1

我有這種模式,並且這個Windows文件名我想匹配它。改變名稱以保護無辜:[a-zA-Z] +被替換爲字母表的連續字母。Python中的正則表達式,丟失在反斜槓

pattern = "C:\\\\a\\\\b\\\\c\\\\d\\\\e f\\\\(g|h|i)\\\\j k\\\\l\\\\m\\\\(n\\\\(o|p)|q)\\\\.*\.sql)" 

str = "C:\\a\\b\\c\\d\\e f\\h\\j k\\l\\m\\n\\o\\z_zz.function.sql" 

但是,python抱怨一個無與倫比的paren。我不知道爲什麼。它給我的位置(62)也不與我的任何一個parens對齊,但是如果我不得不猜測我會說很多反斜線中的一個是意外逃脫的(g或(o當我不需要它時) 。,但這些並沒有幫助前添加更多的反斜槓

+0

提示:您可以使用「原始」字符串表示法來減少所需的反斜槓數量。例如。 'r'C:\ a \ b'' ==''C:\\ a \\ b'' – Billy

+0

如果您必須處理字面反斜槓,請使用原始字符串文字。 –

+0

我原本避免了因爲路徑以s,d,w開頭而引起的混淆...... –

回答

0

你的反斜線都正確轉義位置它給(62)確實匹配了一個括號,最後一個是具體的:

>>> pattern = "C:\\\\a\\\\b\\\\c\\\\d\\\\e f\\\\(g|h|i)\\\\j k\\\\l\\\\m\\\\(n\\\\(o|p)|q)\\\\.*\.sql)" 
>>> pattern[62] 
')' 
>>> len(pattern) 
63 

所以匹配的右括號與您希望您的group是左括號,或者從你的圖案刪除最後一個括號。

+0

哇,它非常明顯。謝謝! –

相關問題