带正则表达式的不平衡括号错误

2024-09-26 22:51:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

[[]]);

我使用的代码是:

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

这将引发以下错误消息:

    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis

我认为我可以相当安全地假设这是由regex中的右括号引起的。如何定义所需的regex而不出现此错误?

谢谢


Tags: 数据代码re网站response错误模式body
3条回答

转义最后一个)]r'\[\[.*?\]\]\)

你的正则表达式应该是

regex = r'\[\[.*?\]\]\);'

它将匹配文本[[符号和以下字符,直到下一个]]);符号。

说明:

  • \[\[匹配文本符号[[
  • .*?匹配任何字符零次或多次。?*之后,强制regex引擎执行最短(非贪婪)匹配。
  • \]\]\);匹配文本符号]]);

您还需要转义最后几个括号字符。

regex = r'\[\[.*?\]\]\);'
                   ^ ^

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

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

相关问题 更多 >

    热门问题