Est-ce que quelqu'un sait si Python (toute version) a utilisé les NFA (Automates Finis Non-Déterministes) pour évaluer les expressions régulières ou utilise-t-il un autre mécanisme? S'il vous plaît fournir des liens/référence si disponible.Est-ce que Python utilise les NFA pour l'évaluation d'expression régulière dans le module re?
6
A
Répondre
5
4
Cela devrait prendre moins d'une ms sur un DFA:
$ time python3 -c 'import re; re.match("a?"*25+"a"*25, "a"*25)'
real 0m7.273s
Change 25 avec 100 et il ne mettra pas fin à une vie.
Voici à quoi il ressemble sur un DFA (grep):
$ time echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |grep "a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
real 0m0.063s
Il y a une grande discussion sur le sujet http://swtch.com/~rsc/regexp/regexp1.html
Questions connexes
- 1. Module re de Python - état de sauvegarde?
- 2. Expression régulière multiligne avec le module re Erlang
- 3. python re module - Quelle expression régulière utiliser pour extraire des morceaux de texte
- 4. Pascal - Re: Utilise
- 5. Python: re..find séquence
- 6. Python et "re"
- 7. Python. Expression régulière
- 8. Comment utiliser Python re module pour remplacer \ n avec rien dans un seul fichier
- 9. Implémentation NFA/DFA en C#
- 10. Module Python pour VBox?
- 11. Python expression régulière pour plusieurs balises
- 12. Python re question - sous-défi
- 13. Module MySQL pour Python
- 14. Minimisation NFA sans déterminisation
- 15. Module Python pour le balisage wiki
- 16. module pour le flux pcap en python
- 17. Python: simuler re.findall dans le module Pexpect
- 18. python expression régulière pour retweets
- 19. Quel algorithme utilise Python dans fractions.gcd()?
- 20. Python Expression régulière Question
- 21. Que fait "de MODULE import _" en python?
- 22. expression régulière pour analyser la chaîne d'option dans python
- 23. fondu dans le module Image Python
- 24. python: expression régulière multiligne
- 25. python simple re préanalyse aide
- 26. Python re "erreur d'échappement bidon"
- 27. Ce que le mécanisme utilise pour intégrer python dans d'autres langages (.Net, Java ....)
- 28. Le module Python le plus utilisé pour le traitement vidéo?
- 29. Algorithme NFA à DFA
- 30. Le module shelve de Python utilise-t-il des E/S mappées en mémoire?
Comme la plupart des moteurs de RE permettent de nos jours pour des langues non régulières à correspondre Je doute que tout moteur RE moderne utilise encore les NFA ou les DFA. – Joey
Eh bien, comme un moteur RE peut identifier un sous-ensemble de RE qui sont régulières, et ceux-ci sont d'usage courant, il est logique d'optimiser pour ces scénarios. Il est donc tout à fait possible qu'ils utilisent parfois les NFA ou les DFA. – MSalters