如何使用正規表示式和 pyparsing 在 Python 中有效地提取嵌套括號?

Patricia Arquette
發布: 2024-11-03 11:47:29
原創
363 人瀏覽過

How can you effectively extract nested parentheses in Python using regular expressions and pyparsing?

使用正規表示式在Python 中提取嵌套括號

在Python 中,使用正則表達式提取嵌套括號可能具有挑戰性。常見的方法是使用 re.compile() 方法,如提供的程式碼片段所示。但是,在處理複雜的嵌套結構時,此方法可能並不總是能產生所需的結果。

對於涉及巢狀括號的情況,使用 pyparsing 函式庫的替代方法提供了更大的靈活性。 Pyparsing 可以建立更複雜的語法規則,如範例所示:

<code class="python">import pyparsing # make sure you have this installed

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>
登入後複製

nestedExpr() 函數定義了用於匹配巢狀括號的語法。它需要三個參數:左括號字元和右括號字元以及括號內要匹配的表達式。

以下是使用定義的語法的範例:

<code class="python">>>> parens.parseString("((a + b) + c)")</code>
登入後複製

此解析的輸出運算是符合運算式的巢狀清單表示:

(                          # all of str
 [
  (                        # ((a + b) + c)
   [
    (                      #  (a + b)
     ['a', '+', 'b'], {}   
    ),                     #  (a + b)      [closed]
    '+',
    'c'
   ], {}
  )                        # ((a + b) + c) [closed]
 ], {}  
)                          # all of str    [closed]
登入後複製

要取得匹配表達式的嵌套列表格式,請使用asList() 方法:

<code class="python">res = parens.parseString("((12 + 2) + 3)")
res.asList()</code>
登入後複製

這將返回:

[[['12', '+', '2'], '+', '3']]
登入後複製

因此,透過利用pyparsing 的嵌套表達式語法,您可以有效地匹配和提取類似數學的字串中的嵌套括號。

以上是如何使用正規表示式和 pyparsing 在 Python 中有效地提取嵌套括號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板