首頁 >後端開發 >Python教學 >如何匹配字串中的嵌套括號:正規表示式與 Pyparsing

如何匹配字串中的嵌套括號:正規表示式與 Pyparsing

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 12:35:30785瀏覽

How to Match Nested Parentheses in Strings: Regex vs. Pyparsing

使用正規表示式符合巢狀括號

處理包含巢狀括號的字串時,使用正規表示式進行比對可能具有挑戰性。雖然提供的程式碼使用 re.findall() 成功匹配最外層表達式,但無法捕獲嵌套表達式。

為什麼正規表示式無法達到

由於其扁平性質,正則表達式在處理嵌套結構時本質上受到限制。它們缺乏遞歸或回溯的概念,這對於解析嵌套括號等複雜結構至關重要。

更好的解決方案:Pyparsing

而不是使用正規表示式對於這項任務,更好的選擇是利用Pyparsing,這是一個專門為解析嵌套語法結構而設計的函式庫。 Pyparsing 提供了nestedExpr() 函數,它允許我們定義可以處理嵌套結構的語法。

以下程式碼片段示範如何使用Pyparsing 來配對和解析巢狀括號:

<code class="python">import pyparsing

# Define the elements of the expression
thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'

# Define the nested expression grammar
parens = pyparsing.nestedExpr('(', ')', content=thecontent)</code>

現在,您可以使用parens 來解析包含巢狀括號的字串:

<code class="python">res = parens.parseString("((12 + 2) + 3)")</code>

輸出:

[
  [['12', '+', '2'], '+', '3']
]

輸出是一個巢狀列表,其中每個內部列表表示已解析表達式的一部分。

結論

雖然正規表示式對於某些字串操作任務很有用,但在處理複雜的嵌套時存在局限性結構。在這種情況下,Pyparsing 提供了針對這些場景量身定制的更全面的解決方案。

以上是如何匹配字串中的嵌套括號:正規表示式與 Pyparsing的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn