Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]problem z gwiazdką w wyrażeniach regularnych
lamcpp
post
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

Ostrzeżenie: (0%)
-----


1.następujący wzorzec: ^a*a$
wyrazy w ktorych sprawdzam dopasowanie to: antylopa, Agnieszka i agregat
Dla wyrazu antylopa nie ma dopasowania z wzorcem! Dlaczego? Przecież przekładając wzorzec z polskiego na nasze wygląda to tak: rozpocznij od a, następnie pobierz dowolne znaki i zakończ na a, więc antylopa powinna mieścić się w dopasowaniu.

2. następujący wzorzec a*a
Teraz wszystkie wyrazy nawet agrest pasują do podanego wzorca. Dlaczego? Przecież powinna tylko antylopa

3. następujący wzorzec ^a*a
antylopa pasuje - tu jest dobrze, Agnieszka nie pasuje - tu też dobrze, ale dlaczego pasuje agrest? przecież powinny być dwie litery 'a' w wyrazie, jest tylko jedna.

Dodam, że sprawdzam wszystko na funkcji preg_match(),
wzorce zapisane są w postaci '/^a*a$/', '/a*a/' i '/^a*a/'
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Adi32
post
Post #2





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Skoro Cię to ciekawi to przeczytaj ten kurs:

http://gajdaw.pl/php/wyrazenia-regularne/p1.html

Jest bardzo przystępny i zrozumiały.

Zachłanne to znaczy, że dla dopasowanie a.*b nie ma sensu. (kropka odpowiada za pojedynczy znak a gwiazdka mówi że może się powtarzać od 0 do wielu) 'b' w tym przypadku też jest wchłaniane przez .* (dlatego mówimy zachłanne - gwiazdka wchłonie ile może) kiedy użyjesz .*? uzyskujesz dopasowywanie leniwe (gwiazdka wchłonie minimalną ilość znaków). Można tym jeszcze manipulować modyfikatorami.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 09:58