Heim > Artikel > Backend-Entwicklung > So passen Sie verschachtelte Klammern in Strings an: Regex vs. Pyparsing
Verschachtelte Klammern mit Regex abgleichen
Beim Umgang mit Zeichenfolgen, die verschachtelte Klammern enthalten, kann die Verwendung regulärer Ausdrücke für den Abgleich eine Herausforderung darstellen. Während der bereitgestellte Code, der re.findall() verwendet, den äußersten Ausdruck erfolgreich abgleicht, kann er die verschachtelten nicht erfassen.
Warum reguläre Ausdrücke nicht ausreichen
Reguläre Ausdrücke sind aufgrund ihrer flachen Natur bei der Handhabung verschachtelter Strukturen von Natur aus eingeschränkt. Ihnen fehlt das Konzept der Rekursion oder des Backtracking, das für das Parsen komplexer Konstrukte wie verschachtelter Klammern von entscheidender Bedeutung ist.
Eine bessere Lösung: Pyparsing
Anstatt hierfür reguläre Ausdrücke zu verwenden Für diese Aufgabe ist es eine bessere Option, Pyparsing zu nutzen, eine Bibliothek, die speziell für das Parsen verschachtelter grammatikalischer Strukturen entwickelt wurde. Pyparsing stellt die Funktion „nestedExpr()“ bereit, mit der wir Grammatiken definieren können, die verschachtelte Konstrukte verarbeiten können.
Der folgende Codeausschnitt zeigt, wie Pyparsing verwendet wird, um verschachtelte Klammern abzugleichen und zu analysieren:
<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>
Jetzt können Sie Parens verwenden, um eine Zeichenfolge zu analysieren, die verschachtelte Klammern enthält:
<code class="python">res = parens.parseString("((12 + 2) + 3)")</code>
Ausgabe:
[ [['12', '+', '2'], '+', '3'] ]
Die Ausgabe ist eine verschachtelte Liste, in der jede Die innere Liste stellt einen Teil des analysierten Ausdrucks dar.
Fazit
Während reguläre Ausdrücke für bestimmte Aufgaben zur Zeichenfolgenmanipulation nützlich sein können, weisen sie Einschränkungen auf, wenn mit komplexen, verschachtelten Ausdrücken gearbeitet wird Strukturen. In solchen Fällen bietet Pyparsing eine umfassendere, auf diese Szenarien zugeschnittene Lösung.
Das obige ist der detaillierte Inhalt vonSo passen Sie verschachtelte Klammern in Strings an: Regex vs. Pyparsing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!