Wyrażenia Regularne - pytania?


(Marcin E Pc) #1

Witam!

Mam pytanie: co oznacza w wyrażeniach regularnych: ^- na początku, czyli że wyrażenie musi być na początku, czyli np: ^[0-9] na początku musi być liczba od 0-9, jeżeli jest [0-9]S czyli na końcu musi być liczba od 0-9, ale jeżeli jest ^[0-9}$ czyli na końcu i na początku musi być liczba od 0-9? i właśnie tu problem, powiedzmy mam ciąb b2c i ereg('^[a-z]$', ciag) zwraca false. I co oznacza na końcu + i *? Plus że może się powtórzyć 1 lub więcej razy, Mnożenia że 0 lub więcej razy?


(inż. Piniol) #2

http://pl.wikipedia.org/wiki/Wyra%C5%BCenie_regularne

http://www.programuj.com/artykuly/www/regularne.php

http://grabun.com/wyrazenia-regularne/

http://maciek.lasyk.info/regexp_checker.html


(Sawyer47) #3

No dokładnie, wszystko dobrze powiedziałeś. A string “b2c” nie pasuje do /^[a-z]$/ - to oczywiste. Bo grupa - [a-z] to tylko jeden znak. /^[a-z]$/ Będzie pasował tylko do pojedynczej litery od a do z.


(Marcin E Pc) #4

Czyli jak mam np: /[0-9]/ to cały string będzie liczbami od 0-9 w innym przypadku zwróci false, ale to nie działa, zwraca zawsze true.A jeżeli napiszę to tak:/ ^[0-9.]*$/ to działa wszystko ok, zwraca false jak w ciągu jest litera alfabetu, nieprawidłowy znak. A ja rozumiem to tak: na początku i na końcu jest liczba, ale jak mam to rozumieć 0 lub więcej razy? A tamto napisałęm tak: /^[a-z]a-z0-9][a-z]$ i działa. I to rozumiem wszystko ok.


(Sawyer47) #5

Grupa, np. [0-9] pasuje do pojedynczego znaku. /[0-9]/ (pozwól, że będę używał takiej Perlowskiej składni :))


(Marcin E Pc) #6

Ok wydaje mi się że wszystko rozumiem, czyli samo ^ znaczy że na początku ciągu, samo $ że na końcu, a ^…$ ŻE od początku do końca ciągu?A dla [0-9] wystarczy jeden znak w ciągu żeby było true?


(Sawyer47) #7

Dokładnie tak jak piszesz. No chcąc być drobiazgowym można wspomnieć o opcji m w Perlu/Rubym, która powoduje, że $ zakotwicza też do znaków nowej linii, ale coś mi się wydaje, że ani w Perlu ani w Rubym nie piszesz. To czasem bywa przydatne i dobrze wiedzieć, ale nie wiem czy ta opcja jest w implementacji której używasz.


(Marcin E Pc) #8

Narazie się uczę, i przy okazji php zahaczyłem o POSIX, ale to tylko ledwie zalążek. Jak się nauczę porządnie php i mysql, do czego jeszcze daleka droga to zapewne będe chciał nauczyć się Perla. Dzięki za wszystkie odpowiedzi :slight_smile: