2016-11-22 95 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

哇,它非常明显。谢谢! –

相关问题