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)
我认为我可以相当安全地假设这是由正则表达式中的右括号引起的。如何定义我想要的正则表达式而不出现此错误?
谢谢
您还需要转义最后一个括号。字符类外部的右方括号不必转义:
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)