[Python] regex killer

Marco Giusti marco.giusti a gmail.com
Mer 16 Ott 2013 13:27:56 CEST


On Wed, Oct 16, 2013 at 01:09:26PM +0200, Giovanni Porcari wrote:
> Buongiorno a tutti
> 
> 
> Eseguendo questo codice in python 2.7.5 funziona correttamente
> ma in 2.7.2. e 2.7.3 python si impianta e non termina.
> 
> Succede solo a me ?

Che si pianti mi sembra normale. Ecco una letturina per la sera[1]
oppure il libro di Beri sulle regex.

In pratica questa parte "(?P<nome>(?:\w*?\s*?)*?\w*)" ha un tempo di
eseguzione che è quadratico. Piuttosto mi stupische che la 2.7.5
funzioni, è cambiato qualcosa nell'implementazione?

[1] http://swtch.com/~rsc/regexp/regexp1.html

ciao

> import re
> 
> t="CURRICULUM Rossi Mazzanti Vien Dal Mare Mario DF/433/43"
> r=r"^(?:CURRICULUM\s*)(?P<nome>(?:\w*?\s*?)*?\w*)\s*?(?P<codice>\w{2}/\w{3}/\w{2})\s*$"
> R=re.compile(r)
> a=re.search(R,t)
> print a.groups()


Maggiori informazioni sulla lista Python