A question that I answered hat mich gefragt:Regulärer Ausdruck Implementierungsdetails
Wie reguläre Ausdrücke in Python implementiert? Welche Art von Effizienzgarantien gibt es? Ist die Implementierung "Standard" oder unterliegt sie Änderungen?
Ich dachte, dass reguläre Ausdrücke als DFAs implementiert werden würden, und waren daher sehr effizient (erfordert höchstens einen Scan der Eingabezeichenfolge). Laurence Gonsalves hat einen interessanten Punkt angesprochen, dass nicht alle reguläre Python-Ausdrücke regulär sind. (Sein Beispiel ist r "(a +) b \ 1", was einer Anzahl von a's, a b und dann der gleichen Anzahl von a's wie vorher entspricht). Dies kann eindeutig nicht mit einem DFA implementiert werden.
Also, um zu wiederholen: Was sind die Implementierungsdetails und Garantien von Python regulären Ausdrücken?
Es wäre auch schön, wenn jemand (angesichts der Implementierung) eine Erklärung geben könnte, warum die regulären Ausdrücke "cat | catdog" und "catdog | cat" zu unterschiedlichen Suchergebnissen in der Zeichenfolge führen " catdog ", wie in der question that I referenced before erwähnt.
Die heutigen regulären Ausdruck Implementierungen haben weit mehr Funktionen als die klassische Definition von regulären Ausdrücken beschreibt. – Gumbo
@Gumbo: In der Tat tun sie ... das ist der Grund für meine Frage. Ich bin neugierig auf eine bestimmte Implementierung, da es nicht sicher ist anzunehmen, dass ein DFA verwendet wird (wegen dieser zusätzlichen Funktionen). – Tom
Verwenden Sie die Quelle Luke (http://svn.python.org/view/python/trunk/Lib/re.py?view=markup). Es scheint tatsächlich ziemlich gut dokumentiert zu sein. –