A question that I answered mi chiedo:Dettagli di implementazione di espressioni regolari
Come vengono implementate le espressioni regolari in Python? Che tipo di garanzie di efficienza ci sono? L'implementazione è "standard" o è soggetta a modifiche?
Ho pensato che le espressioni regolari sarebbero state implementate come DFA e quindi erano molto efficienti (richiedendo al massimo una scansione della stringa di input). Laurence Gonsalves ha sollevato un punto interessante che non tutte le espressioni regolari di Python sono regolari. (Il suo esempio è r "(a +) b \ 1", che corrisponde ad alcuni numeri di a, a b, e quindi lo stesso numero di a di prima. Questo chiaramente non può essere implementato con un DFA.
Quindi, per ribadire: quali sono i dettagli di implementazione e le garanzie delle espressioni regolari Python?
Sarebbe anche bello se qualcuno potesse dare una sorta di spiegazione (alla luce dell'implementazione) sul motivo per cui le espressioni regolari "cat | catdog" e "catdog | cat" portano a risultati di ricerca diversi nella stringa " catdog ", come indicato nello question that I referenced before.
Le implementazioni di espressioni regolari di oggi hanno molte più funzioni di quelle descritte nella classica definizione di espressioni regolari. – Gumbo
@Gumbo: Effettivamente lo fanno ... questa è una delle ragioni della mia domanda. Sono curioso di una implementazione specifica perché non è sicuro assumere un DFA (a causa di queste funzionalità extra). – Tom
Usa la fonte, Luke (http://svn.python.org/view/python/trunk/Lib/re.py?view=markup). In realtà sembra abbastanza ben documentato. –