![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Rozmyślam teraz nad prostym przykładem, wyczytałem z pewnej książki, myślałem, że błąd w składni jakiś mają, ale w praktyce wychodzi tak jak autor pisze, ale do rzeczy.
Rzecz ma się odnośnie kwantyfikatora chciwego vs niechętnego. Sama ich definicja jest w prosta, pokazuję na przykładzie:
Co do tego przykładu żadnego "ale" nie mam, działa tak jak oczekiwałem, tzn w tablicy są 3 wartości takie jak powinny być, ale:
W tym przykładzie kwantyfikator chciwy zaczyna od całego ciągu, odejmując po kolei 1,2,3,4 natrafia w końcu na dopasowanie i ładuje w tablicę, ale na tym sprawa się kończy, przecież odejmując kolejne znaki nie powinien "złapać" jeszcze "abbbaabbb" oraz "abbb"? Wygląda na to że dopasując pierwszy fragment kończy działanie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Chciwy zawsze łapie najdłuższy, pasujący ciąg. W tym wypadku jest to wszystko po odcięciu liczbowej końcówki (wszak tuż przed nimi są trzy B ). A tego właśnie szuka: trzech b poprzedzonych czymkolwiek (i w tym czymkolwiek zawierają się także inne bbb)
Ten post edytował Comandeer 13.09.2015, 13:23:09 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Bezsprzecznie tak, masz całkowitą rację i to rozumiem, ale idąc tym tokiem rozumowania kwantyfikator niechętny zaczyna od pierwszego znaku i jak dojdzie do "abbb" to ładnie go znajduje, po czym przechodzi dalej i jeszcze znajduje dwa dopasowania (co jest logiczne), więc chodzi o to że niechętny zawsze zwróci tyle ile znajdzie począwszy od najkrótszego do najdłuższego, a chciwy tylko najdłuższy i kończy zabawę?
Ten post edytował Fred1485 13.09.2015, 13:29:33 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Nie, ale będzie tak kombinował, żeby za każdym razem pobrać jak najwięcej. Jeśli da się wszystkie dopasowania złączyć w jedno, to to zrobi.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
O taką odpowiedź chodziło (IMG:style_emoticons/default/biggrin.gif) dzięki wielkie!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:41 |