簡體   English   中英

正則表達式的不平衡括號錯誤

[英]Unbalanced parenthesis error with 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 = r'\[\[.*?]]\);'
                   ^

如果您試圖獲取方括號之間的內容,請在此處使用捕獲組。

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

轉義最后一個)] r'\\[\\[.*?\\]\\]\\)

你的正則表達式應該是,

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

它將匹配文字[[符號和以下字符直到下一個]]); 符號。

解釋:

  • \\[\\[匹配文字[[符號。
  • .*? 匹配任何字符零次或多次。 ? *后強制正則表達式引擎進行最短(非貪婪)匹配。
  • \\]\\]\\); 匹配文字]]); 符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM