python中的Regexp,以反斜杠输掉

时间:2016-11-22 17:17:03

标签: python regex escaping

我有这个模式,这个windows文件名我希望与之匹配。更改名称以保护无辜者:[a-zA-Z] +被连续字母替换。

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)也没有与我的任何一个排队对齐,但是如果我不得不猜测我会说许多反斜杠中的一个意外逃脱(g或(当我没有&时)想要它,但在那些前面添加更多的反斜杠并没有帮助。

1 个答案:

答案 0 :(得分:0)

您的反斜杠都已正确转义。它给出的位置(62)确实与paren匹配,最后一个是具体的:

>>> 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

所以将右边的paren与你想要group的左边的paren相匹配,或者从你的模式中移除最后一个paren。