-
Data: 2009-05-21 09:04:12
Temat: regexp - jak napisać źle i co z tego wynika
Od: Paweł Kierski <n...@p...net> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- 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
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
Najnowsze wątki
- 2025-09-13 Korea Południowa odpowie za niewolnictwo seksualne armii USA
- 2025-09-13 Zatrzymano zabójcę Charliego Kirka
- 2025-09-13 Wrześniowe promocje na ładowarkach
- 2025-09-13 Warszawa => BI Developer <=
- 2025-09-13 Warszawa => Sales Assistant <=
- 2025-09-13 Warszawa => Lead SAP PP Consultant <=
- 2025-09-13 Jestem pod wrażeniem. Komputery bankowe w łikendy nie odpoczywają ;-)
- 2025-09-13 Lublin => Delphi Programmer <=
- 2025-09-13 Lublin => Programista Delphi <=
- 2025-09-13 SFP, 10G, simplex sc/apc
- 2025-09-13 KIA 2025r
- 2025-09-12 Rejestracja godna elektryka
- 2025-09-12 Koniec dopłat
- 2025-09-12 Odszkodowanie
- 2025-09-12 Warszawa => Senior SAP Consultant - PP area <=