Juste pour compléter les préoccupations de réponse les plus votées concernant le temps de compilation des expressions régulières, voici une version avec un modèle précompilé :
from timeit import timeit
import re
def find(string, text):
if string.find(text) > -1:
pass
def re_find(string, text_re):
if text_re.match(string):
pass
def best_find(string, text):
if text in string:
pass
print timeit("find(string, text)", "from __main__ import find; string='lookforme'; text='look'")
print timeit("re_find(string, text_re)", "from __main__ import re_find; string='lookforme'; import re; text_re=re.compile('look')")
print timeit("best_find(string, text)", "from __main__ import best_find; string='lookforme'; text='look'")
Et mes chiffres :
0.189274072647
0.239935874939
0.0820939540863
Le modèle précompilé améliore les nombres, mais malgré tout, in
est le plus rapide.