🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
3 messages
3 total messages Started by mlowicki Fri, 16 Oct 2009 15:23
debugowanie wyrażeń regularnych
#26876
Author: mlowicki
Date: Fri, 16 Oct 2009 15:23
20 lines
2090 bytes
Witam!
http://code.djangoproject.com/changeset/11604 - poprawiono tutaj pewne
wyrazenie regularne - linia 533-537. Czesc, ktora mnie interesuje
sprawdza poprawnosc nazwy domeny. Okazuje sie ze jak dam nazwe domeny
w stylu : yahoo.comx26latlngx3d15854521645943074058 to stare wyrazenie
sprawdza ze ponad godzine podczas gdy nowe mniej niz sekunde. Moglby
mi ktos podpowiedziec dlaczego tak jest ? ewentualnie ktos moglby
podac jakeis materialy wyjasniajace dzialanie silnia regexp w
pythonie ? sprawdzcie sobie te dwa wyrazenia:

p1 = re.compile('(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6}',
re.IGNORECASE)
p2 = re.compile('(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]
{2,6}\.?', re.IGNORECASE)

p2.match('yahoo.comx26latlngdafdsfdfadfadfadfad')
p1.match('yahoo.comx26latlngdafdsfdfadfadfadfad')

wynik z p2 dostaje po chwili a z p1 po kilku minutach. Z gory dzieki
za jakies podpowiedzi. pozdrawiam
Re: debugowanie wyrażeń regularnych
#26877
Author: Filip Wasilewski
Date: Fri, 16 Oct 2009 16:09
28 lines
2351 bytes
On 16 Paź, 17:23, mlowicki <mlowi...@gmail.com> wrote:
[...]
> ewentualnie ktos moglby
> podac jakeis materialy wyjasniajace dzialanie silnia regexp w
> pythonie ? sprawdzcie sobie te dwa wyrazenia:
>
> p1 = re.compile('(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6}',
> re.IGNORECASE)
> p2 = re.compile('(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]
> {2,6}\.?', re.IGNORECASE)

Jeśli przy kompilacji podasz flagę re.DEBUG, to zostaną wyświetlone
informacje na temat tego, jak będzie wyglądało sprawdzanie dopasowania
dla danego wyrażenia regularnego.

p1 = re.compile('(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6}',
re.IGNORECASE|re.DEBUG)
p2 = re.compile('(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]
{2,6}\.?', re.IGNORECASE|re.DEBUG)

Podobne informacje można też uzyskać za pomocą nieudokumentowanego
modułu sre_parse: sre_parse.parse('pattern').

Jeśli chodzi o pierwsze wyrażenie, to w czasie jego przetwarzania może
dojść do kosztownej iteracji po kilku zagnieżdżonych pętlach.

Filip Wasilewski
http://filipwasilewski.pl/
Re: debugowanie wyrażeń regularnych
#26878
Author: mlowicki
Date: Sat, 17 Oct 2009 11:54
31 lines
2576 bytes
On 16 Paź, 18:09, Filip Wasilewski <filipwasilew...@gmail.com> wrote:
> On 16 Paź, 17:23, mlowicki <mlowi...@gmail.com> wrote:
> [...]
>
> > ewentualnie ktos moglby
> > podac jakeis materialy wyjasniajace dzialanie silnia regexp w
> > pythonie ? sprawdzcie sobie te dwa wyrazenia:
>
> > p1 = re.compile('(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6}',
> > re.IGNORECASE)
> > p2 = re.compile('(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]
> > {2,6}\.?', re.IGNORECASE)
>
> Jeśli przy kompilacji podasz flagę re.DEBUG, to zostaną wyświetlone
> informacje na temat tego, jak będzie wyglądało sprawdzanie dopasowania
> dla danego wyrażenia regularnego.
>
> p1 = re.compile('(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6}',
> re.IGNORECASE|re.DEBUG)
> p2 = re.compile('(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]
> {2,6}\.?', re.IGNORECASE|re.DEBUG)
>
> Podobne informacje można też uzyskać za pomocą nieudokumentowanego
> modułu sre_parse: sre_parse.parse('pattern').
>
> Jeśli chodzi o pierwsze wyrażenie, to w czasie jego przetwarzania może
> dojść do kosztownej iteracji po kilku zagnieżdżonych pętlach.
>
> Filip Wasilewskihttp://filipwasilewski.pl/

O to właśnie mi chodziło, dzięki wielkie
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads