Heim  >  Artikel  >  Backend-Entwicklung  >  So passen Sie verschachtelte Klammern in Strings an: Regex vs. Pyparsing

So passen Sie verschachtelte Klammern in Strings an: Regex vs. Pyparsing

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 12:35:30696Durchsuche

How to Match Nested Parentheses in Strings: 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn