On 2013-10-16 12:34, Giovanni Porcari wrote:
Il giorno 16/ott/2013, alle ore 13:27, Marco Giusti
<marco.giu...@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.

Infatti, penso sia http://bugs.python.org/issue9669

v2.7.4                         83117:026ee0057e2d

changeset:   82226:dc8a11c16021
branch:      2.7
parent:      82219:c1b3d25882ca
user:        Serhiy Storchaka <storch...@gmail.com>
date:        Sat Feb 16 21:23:01 2013 +0200
summary: Issue #9669: Protect re against infinite loops on zero-width matching in

v2.7.3                         76200:70274d53c1dd

Direi rilasciato in 2.7.4.


--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a