[php] wyrazenia regularne typu perlowskiego

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Twardy
Posty: 7
Rejestracja: czw gru 30, 2004 9:52 pm

[php] wyrazenia regularne typu perlowskiego

Post autor: Twardy »

Mam pytanie odnosnie wyrazen regularnych. Nie mam pojecia czym sie roznia te wyrazenia:

1.

Kod: Zaznacz cały

\d+costam
2.

Kod: Zaznacz cały

(?>\d+)costam
Czym jest i jakie ma znaczenie:

Kod: Zaznacz cały

(?>    )
Twardy
Posty: 7
Rejestracja: czw gru 30, 2004 9:52 pm

Re: [php] wyrazenia regularne typu perlowskiego

Post autor: Twardy »

Po glebszej analizie cos odkrylem. A mianowice to, ze mamy zalozmy ciag:

Kod: Zaznacz cały

wwwwwwwwwwwwala
i teraz zapiszemy dla niego wyrazenie:

Kod: Zaznacz cały

\w+ala
Zapytanie wykaze, ze znalazl ciag. Natomiast takie nie:

Kod: Zaznacz cały

(?>\w+)ala
W pierwszym przykladzie na poczatku mamy w\+ co oznacza zakres od jednego do nieskonczonosci kazda litere, cyfre i _ . I teraz funkcja do wyrazen bedzie kolejno sprawdzala czy wystapil znak z zakresu. A ze wystepuje to koncowke ala tez uzna jako kolejne znaki i w tym przypaku nie znajdzie dalej ala. Ale! jest wlasnie ale. Normalnie gdy nie znajdzie to sprawdza od poczatku ten wyraz cofajac sie od konca o jeden znak az do 3-ech cofniec i znalezlieniu dalszego ciagu ala. I to nastapi w pierwszym przypadku wyrazenia. Natomiast (?> ...) blokuje cofanie badanego ciagu w nawiasach co spowoduje, ze nie znajdzie.

ps. Ale jest pytanie, kiedy to sie wykorzystuje?
ODPOWIEDZ