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中文網其他相關文章!