- A hozzászóláshoz be kell jelentkezni
Hozzászólások
A regexes problémának az az oka, hogy a CPython visszalépéses kereséssel implementálja a mintaillesztést (Thompson-féle) véges determinisztikus automata helyett, így bizonyos inputokra O(2n) lesz a futásidő (n az inputhossz), szemben a másik megoldás O(m×n)-jével (m a mintahossz).
- A hozzászóláshoz be kell jelentkezni
/o\
- A hozzászóláshoz be kell jelentkezni
A Thompson se jobb mert az meg exponencialis sok allapotot general es keveset is tud.
- A hozzászóláshoz be kell jelentkezni
Igen, de (lineáris időben) minimalizálható lineárisan sok állapotúra.
Back reference-t valóban nem tud (mivel akkor ugye a kifejezés már nem harmadik típusú), minden mást azt hiszem, igen. Érdekes lenne egy olyan implementáció, ami a kifejezés struktúrájától függően választana illesztési algoritmust. Nem néztem utána, van-e már ilyen.
- A hozzászóláshoz be kell jelentkezni
Van mindkettőnél jobb: ez kevés (polinom) memóriát használ és gyors (lineáris) is: https://code.google.com/p/re2/ . Itt írja le a szerző, hogyan működik: http://swtch.com/~rsc/regexp/ . A leírásban Thompson automatáját is említi.
- A hozzászóláshoz be kell jelentkezni