使用正規表示式在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中文網其他相關文章!