我有这个模式,这个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或(当我没有&时)想要它,但在那些前面添加更多的反斜杠并没有帮助。
答案 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。