[Python] regex killer

Giovanni Porcari giovanni.porcari a softwell.it
Mer 16 Ott 2013 13:34:07 CEST


Il giorno 16/ott/2013, alle ore 13:27, Marco Giusti <marco.giusti a gmail.com> ha scritto:

> 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()


Capisco che sia quadratico e mi sta bene ma parliamo di applicare la regex su una stringa di 55 caratteri.

Credo che il problema sia 'benaltro' . E con ciò accusatemi di benaltrismo :D:D


G



Maggiori informazioni sulla lista Python