-
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: Paweł Kierski <n...@p...net>
Newsgroups: pl.comp.programming
Subject: regexp - jak napisać źle i co z tego wynika
Date: Thu, 21 May 2009 11:04:12 +0200
Organization: http://onet.pl
Lines: 75
Message-ID: <gv35ej$bt1$1@news.onet.pl>
Reply-To: n...@p...net
NNTP-Posting-Host: 91.197.12.14
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1242896659 12193 91.197.12.14 (21 May 2009 09:04:19 GMT)
X-Complaints-To: n...@o...pl
NNTP-Posting-Date: Thu, 21 May 2009 09:04:19 +0000 (UTC)
User-Agent: Mozilla-Thunderbird 2.0.0.0 (X11/20070601)
Xref: news-archive.icm.edu.pl pl.comp.programming:182080
[ ukryj nagłówki ]"Trochę" "upojnego" debugowania doprowadziło mnie do znalezienia
błędu, który został popełniony przy pisaniu regexpa. Oryginalny był
baaardzo długi i skomplikowany, tu pokażę samo "mięsko".
W założeniu miał łapać sekwencję:
("wyraz" jeden lub więcej razy, "separator") jeden lub więcej razy,
napis "xyz". "wyraz" to literki, "separator" to kropka lub podkreślenie.
No i napisano:
([A-z]+[._])+xyz
Po czym regexp trafił na długi ciąg podkreśleń i... zawisł. Tu dam
spoiler, gdyby ktoś chciał samodzielnie pokombinować 8-)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
[A-z] to miał być skrót [A-Za-z] (tak można, użyć klas znaków, ale
komuś się nie chciało zajrzeć do dokumentacji). Niestety [A-z] to
[A-Z\[\\\]\^_`a-z] (znaki "[\]^_`" oprócz liter). Dla przypadku szukania
w ciągu podkreśleń można całe wyrażenie zredukować do: "(_+_)+xyz".
Automat próbuje:
- _+ dopasowało się do całego ciągu (zachłannie), ale ciąg się skończył
- _+ dopasowało się do całego ciągu -1 znak, _ dopasowało się do
ostaniego _, ale nie ma xyz
- _+ dopasowało się do całego ciągu -2 znaki, _ dopasowało się do
przedostaniego _, próbujmy jeszcze raz z _+ - dopasowało się, ale nie
ma _
- _+ dopasowało się do całego ciągu -3 znaki, _ dopasowało się do
_ 2 znaki od końca, próbujmy jeszcze raz z _+ - dopasowało się do
dwóch _ z końca, ale nie ma _
- _+ dopasowało się do całego ciągu -3 znaki, _ dopasowało się do
_ 2 znaki od końca, próbujmy jeszcze raz z _+ - dopasowało się do
przedostaniego _, _ dopasowało się do ostatniego _, ale nie ma xyz
... i tak dalej - drzewo poszukiwań rośnie szybko, a zawsze na końcu
brakuje tego "xyz", a trzeba różnych kombinacji dopasowań "(_+_)+".
Cały problem powstaje zawsze, gdy dla (R1+R2)+ jest taki ciąg, do
którego można dopasować zarówno R1 jak i R2, i taki ciąg wystąpi wiele
razy po sobie.
--
Paweł Kierski
n...@p...net
Następne wpisy z tego wątku
- 21.05.09 13:12 Marcin 'Malcom' Malich
- 21.05.09 14:16 Paweł Kierski
- 21.05.09 17:06 Daniel Janus
- 21.05.09 20:40 matmis
- 22.05.09 07:51 Paweł Kierski
- 22.05.09 07:54 Paweł Kierski
- 24.05.09 21:03 matmis
- 25.05.09 07:37 Paweł Kierski
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-20 No właśnie
- 2025-12-20 Wy tam w sądach jesteście JESZCZE BARDZIEJ POJEBANI
- 2025-12-20 eksplozja cen i kosztów w Polsce
- 2025-12-20 Dalekopis T100 - problem z powrotem karetki
- 2025-12-20 Diody LED - oświetlenie na choinkę
- 2025-12-20 Bieruń => Junior Dynamics 365 Finance Consultant <=
- 2025-12-20 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-12-20 Sędzia podrobił testament
- 2025-12-19 Nie widzieć gdzie się jedzie
- 2025-12-19 Wyłączenie sędziego
- 2025-12-19 12 latka zabiła rok młodszą koleżanke w Jeleniej Górze
- 2025-12-19 M. Romanowski JUŻ bez ENA ale dalej z nakazem aresztowania w RP3
- 2025-12-18 ale wiesz, że są gotowce?
- 2025-12-18 Portfel bankiera -- dokąd przenieść?
- 2025-12-18 Warszawa => Inżynier Systemów i Sieci <=




Chińskie auta: Od niskiej jakości do globalnego lidera. Co pokazuje raport EFL?