正则表达式出现不平衡括号错误

gdo*_*371 3 python regex json scrapy

我使用以下正则表达式从网站 Javascript 数据源获取包含在以下字符模式中的所有数据

[[]]);
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码是这样的:

regex = r'\[\[.*?\]]);'
        match2 = re.findall(regex, response.body, re.S)
        print match2
Run Code Online (Sandbox Code Playgroud)

这会抛出一条错误消息:

    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
Run Code Online (Sandbox Code Playgroud)

我认为我可以相当安全地假设这是由正则表达式中的右括号引起的。如何定义我想要的正则表达式而不出现此错误?

谢谢

hwn*_*wnd 6

您还需要转义最后一个括号。字符类外部的右方括号不必转义:

regex = r'\[\[.*?]]\);'
                   ^
Run Code Online (Sandbox Code Playgroud)

如果您尝试获取方括号之间的内容,请在此处使用捕获组。

>>> import re
>>> s = 'foo [[bar]]); baz [[quz]]); not [[foobar]]'
>>> matches = re.findall(r'\[\[(.*?)]]\);', s, re.S)
>>> matches
['bar', 'quz']
Run Code Online (Sandbox Code Playgroud)