Regular expression-Implementierung-details

Einen die Frage, die ich beantwortet hat mich gefragt:

Wie werden reguläre Ausdrücke in Python implementiert? Welche Art von Effizienz garantiert gibt es? Ist die Umsetzung "standard", oder ist das Thema zu ändern?

Dachte ich, dass reguläre Ausdrücke umgesetzt würde, wie DFAs und waren daher sehr effizient (was bei den meisten ein scan des Eingabe-string). Laurence Gonsalves hob ein interessanter Punkt, dass nicht alle Python reguläre Ausdrücke sind reguläre. (Sein Beispiel ist r"(a+)b\1", das entspricht eine gewisse Anzahl von a, a b, und dann die gleiche Anzahl von a ' s wie vorher). Dies kann nicht realisiert werden mit einem DFA.

Also, um zu wiederholen: was sind die details der Implementierung und die Gewährleistung der Python reguläre Ausdrücke?

Es wäre auch schön, wenn jemand geben könnte, irgendeine Art von Erklärung (im Lichte der Umsetzung), warum die regulären Ausdrücke "cat|catdog" und "catdog|Katze" führen unterschiedliche Ergebnisse in der Zeichenfolge "catdog", wie erwähnt, in Frage, auf die ich verwiesen vor.

  • Heutige Implementierungen von regulären Ausdrücken haben weit mehr Funktionen als die klassische definition von regulären Ausdrücken beschrieben.
  • In der Tat, Sie tun... das ist sozusagen der Grund für meine Frage. Ich bin neugierig auf eine konkrete Umsetzung, denn es ist wirklich nicht sicher, dass ein DFA verwendet wird (wegen der zusätzlichen features).
  • Verwenden Sie die Quelle, Luke (svn.python.org/view/python/trunk/Lib/re.py?view=markup). Es scheint in der Tat ziemlich gut dokumentiert.
InformationsquelleAutor Tom | 2009-05-09
Schreibe einen Kommentar