如何使用 PyParsing 在 Python 中匹配和提取嵌套括號?

Linda Hamilton
發布: 2024-11-02 06:43:29
原創
627 人瀏覽過

How Can I Match and Extract Nested Parentheses in Python Using PyParsing?

Python:使用正規表示式匹配巢狀括號

匹配巢狀括號是處理數學表達式時的常見任務。然而,使用正規表示式在處理巢狀結構時有其限制。雖然您可能嘗試使用 re.compile('(. )') 解決此問題,但它僅捕獲最外面的括號。

採用PyParsing 進行嵌套構造

與使用正則表達式不同,更合適的方法是使用PyParsing,這是一個專門為解析複雜文本結構而設計的庫。 PyParsing 利用遞歸解析技術,使其能夠有效地處理巢狀結構。

這是使用PyParsing 的範例:

<code class="python">import pyparsing

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

這定義了兩個元素:thecontent,匹配字母數字字元' ' 、 和'-' 以及括號,表示由括起來的巢狀表達式

範例用法

要使用它,您可以按照以下範例操作:

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

預期輸出:

<code class="text">(
  [
    (
      ['a', '+', 'b'], {}
    ),
    '+',
    'c'
  ], {}
)</code>
登入後複製

擷取資料列表格式

如果您想要擷取巢狀列表,可以使用下列格式:

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

輸出:

<code class="text">[[['12', '+', '2'], '+', '3']]</code>
登入後複製

利用PyParsing,您可以有效地匹配和提取複雜文字結構中的嵌套括號。

以上是如何使用 PyParsing 在 Python 中匹配和提取嵌套括號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!