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 "

  • Rekursives Pascal-Dreieck-Layout
  • Python mit Regex, um Strings rekursiv zu ersetzen
  • Verständnis und Visualisierung der Rekursion
  • Mit Rekursion, um Kräfte von großen Ziffern zu berechnen
  • Python rekursive vektorisierung mit timeseries
  • Python3 und rekursive Klasse
  • Python-Rekursion über 10000 Knoten
  • Python3 rekursionsanimation in QuickDraw
  • 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.