【问题标题】:Unbalanced parenthesis error with Regex正则表达式的不平衡括号错误
【发布时间】:2014-09-26 07:52:52
【问题描述】:

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

[[]]);

我使用的代码是这样的:

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

这是抛出一个错误消息:

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

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

谢谢

【问题讨论】:

    标签: python regex json scrapy


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      你的正则表达式应该是,

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

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

      说明:

      • \[\[ 匹配文字 [[ 符号。
      • .*? 匹配任何字符零次或多次。 ?* 之后强制正则表达式引擎进行最短(非贪婪)匹配。
      • \]\]\); 匹配文字 ]]); 符号。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-04
          • 2019-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          相关资源
          最近更新 更多