Fora je što regex + čita koliko god može karaktera u opsegu od a-z dok ne naiđe na neki ne a-z karakter i vrati match, tzv. greedy quantifier, dok bi recimo bez + za svaki a-z karakter vratio match.
%timeit ''.join(i for i in tekst.lower() if i.isalpha())
1 loop, best of 5: 368 ms per loop
%timeit ''.join(filter(lambda i: i.isalpha(), tekst))
1 loop, best of 5: 508 ms per loop
%timeit ''.join(re.findall('[a-z]+', tekst.lower()))
1 loop, best of 5: 276 ms per loop
Ma ne, pazi ova petlja gde ide samo prolaz i provera, u kompajliranom jeziku, nema teorije da bi bila
sporija od regex-a. Zato kad radis u Pythonu, napravis heavy workload u C-u, a onda samo pozivas
f-je.