A question that I answered got me demander:détails de mise en œuvre d'expression régulière
Comment sont des expressions régulières mises en œuvre en Python? Quel type de garanties d'efficacité y a-t-il? La mise en œuvre est-elle «standard» ou est-elle sujette à changement? Je pensais que les expressions régulières seraient implémentées en tant que DFA, et étaient donc très efficaces (nécessitant au plus un balayage de la chaîne d'entrée). Laurence Gonsalves a soulevé un point intéressant que toutes les expressions régulières Python ne sont pas régulières. (Son exemple est r "(a +) b \ 1", qui correspond à un certain nombre de a, de b, et ensuite au même nombre de a que précédemment). Ceci ne peut clairement pas être implémenté avec un DFA. Donc, pour réitérer: quels sont les détails d'implémentation et les garanties des expressions régulières Python?
Ce serait bien aussi que quelqu'un puisse expliquer (à la lumière de l'implémentation) pourquoi les expressions régulières "cat | catdog" et "catdog | cat" conduisent à des résultats de recherche différents dans la chaîne " catdog ", comme mentionné dans le question that I referenced before.
Les implémentations d'expressions régulières d'aujourd'hui ont beaucoup plus de fonctionnalités que ne le décrit la définition classique des expressions régulières. – Gumbo
@Gumbo: En effet, ils le font ... c'est en quelque sorte la raison de ma question. Je suis curieux d'une implémentation spécifique car il n'est pas sûr de supposer qu'un DFA est utilisé (à cause de ces fonctionnalités supplémentaires). – Tom
Utilisez la source, Luke (http://svn.python.org/view/python/trunk/Lib/re.py?view=markup). Cela semble en fait assez bien documenté. –