Wie kann ein rekursiver Regexp in Python umgesetzt werden?

Ich bin interessiert, wie man rekursive Regexp Matching in Python implementieren kann (ich habe keine Beispiele gefunden: (). Zum Beispiel wie würde man einen Ausdruck schreiben, der mit "bracket balanced" String wie "foo (bar (bar (foo) ) (Foo1) bar1 "

  • Wie kann man die unendliche Rekursion stoppen, wenn Python-Objekte sich gegenseitig auslösen?
  • Max Rekursionstiefe beim Versuch, Instanzmethode zu verspotten
  • Rekursion Think Python 2 Übung 5.5
  • Python: Konvertieren Sie eine for-Schleife in eine Rekursionsfunktion
  • Regelkreis für ein nummerierendes Spiel in Python
  • Entfernen Sie alle verschachtelten Blöcke, während Sie nicht verschachtelte Blöcke alleine über Python verlassen
  • Rekursive Python-Funktion, die PowerSet von Elementen zurückgibt
  • Konstruieren Sie einen Baum aus der Liste der Dateipfade (Python) - Leistungsabhängig
  • 4 Solutions collect form web for “Wie kann ein rekursiver Regexp in Python umgesetzt werden?”

    Du könntest pyparsing benutzen

    #!/usr/bin/env python from pyparsing import nestedExpr import sys astring=sys.argv[1] if not astring.startswith('('): astring='('+astring+')' expr = nestedExpr('(', ')') result=expr.parseString(astring).asList()[0] print(result) 

    Es läuft:

     % test.py "foo(bar(bar(foo)))(foo1)bar1" ['foo', ['bar', ['bar', ['foo']]], ['foo1'], 'bar1'] 

    Das ist eine alte Frage, aber für die Leute, die hierher kommen, suchen:

    Es gibt ein alternatives Regex-Modul für Python, das rekursive Muster unterstützt: https://pypi.python.org/pypi/regex

    Und es hat eine Menge mehr schöne Verbesserungen auf re .

    Du kannst es nicht mit einem Regexp machen. Python unterstützt keine rekursive Regexp

    Leider glaube ich nicht, dass Pythons Regexps rekursive Muster unterstützen.

    Du kannst es wohl mit so etwas wie pyparsing punkten: http://pyparsing.wikispaces.com/

    Python ist die beste Programmiersprache der Welt.