expresii regulate

4
^ - indica inceputul liniei $ - indica sfarsitul liniei . - (punct) orice caracter [] - un caracter dintre cele din paranezele patrate [^] - orice caracter, in afara celor din paranezele patrate \ - scoate din contextul formari expresiei caracterul care urmeaza + - caracterul (expresia) anterior acestui semn se poate repeta odata si de cate ori e posibil (de la 1 la infinit) * - caracterul (expresia) anterior acestui semn se poate repeta de cate ori e posibil sau niciodate (de la 0 la infinit) ? - caracterul (expresia) anterior acestui semn se poate repeta ce mult odata <> - un cuvant intreg (|) - lista de optiuni SAU {m, n} - repetarea expresiei de la "m" la "n" ori Iata cateva exemple de expresii regulate: (.*) - Reprezinta toate caracterele (prin .) repetate de cate ori e posibil (dat de *) <salut> - Cuvantul "salut" (ci|co)tim - Reprezinta "citim" si "cotim" ^The .* hack$ - Sirurile care incep cu "the " si se sfarsesc cu " hack" ^www.[a-z0-9]+.ro$ - Reprezinta sirurile "www.---.ro" unde '---' poate fi orice litera sau cuvant ce contine litere mici si numere (^-\+[0-9]*) - Orice numar care incepe cu "-" sau "+" ^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z] {2,4})$ - Expresie regulata pentru adrese de e-mail Expres ie Semnificaţie \ Următorul meta-caracter devine un caracter obişnuit ^ Început de linie . Orice caracter în afară de newline

Upload: ion-suiu

Post on 30-Jan-2016

223 views

Category:

Documents


0 download

DESCRIPTION

Expresii Regulate

TRANSCRIPT

Page 1: Expresii Regulate

^   - indica inceputul liniei $   - indica sfarsitul liniei .   - (punct) orice caracter []   - un caracter dintre cele din paranezele patrate [^]   - orice caracter, in afara celor din paranezele patrate \   - scoate din contextul formari expresiei caracterul care urmeaza +   - caracterul (expresia) anterior acestui semn se poate repeta odata si de cate ori e 

posibil (de la 1 la infinit) *   - caracterul (expresia) anterior acestui semn se poate repeta de cate ori e posibil 

sau niciodate (de la 0 la infinit) ?   - caracterul (expresia) anterior acestui semn se poate repeta ce mult odata <>   - un cuvant intreg (|)   - lista de optiuni SAU {m, n}   - repetarea expresiei de la "m" la "n" ori

Iata cateva exemple de expresii regulate:

(.*)   - Reprezinta toate caracterele (prin .) repetate de cate ori e posibil (dat de *) <salut>   - Cuvantul "salut" (ci|co)tim   - Reprezinta "citim" si "cotim" ^The .* hack$   - Sirurile care incep cu "the " si se sfarsesc cu " hack" ^www.[a-z0-9]+.ro$   - Reprezinta sirurile "www.---.ro" unde '---' poate fi orice litera 

sau cuvant ce contine litere mici si numere (^-\+[0-9]*)   - Orice numar care incepe cu "-" sau "+" ^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$   - Expresie 

regulata pentru adrese de e-mail

Expresie Semnificaţie

\ Următorul meta-caracter devine un caracter obişnuit

^ Început de linie

. Orice caracter în afară de newline

$ Sfîrşit de linie

|Alternanţă ( )

() Indică precedenţa operaţiilor

Concatenarea este implicită (nu folosim nici un semn)

[] O mulţime de caractere (ca la grep)

* Operatorul star: R* = R de zero sau mai multe ori la rînd

+ R+ = RR* (R cel puţin o dată)

?R+ =   (R de zero sau una ori)

{n} R{n} = R exact de n ori

Page 2: Expresii Regulate

{n,} R{n,} = R de cel puţin n ori

{n,m} R{n,m} = R de cel puţin n dar cel mult m ori la rînd

\t Caracterul tab

\n Caracterul sfîrşit de linie

\r Caracterul retur de car

\x1B Caracter descris în hexazecimal

\l Următorul caracter micşorat (majuscule devin minuscule)

\u Următorul caracter majorat (minusculele devin majuscule)

\w Orice caracter care formează ``cuvinte'' (alfanumerice şi _)

\W Orice caracter care nu formează cuvinte

\s Orice spaţiu

\S Orice caracter care nu e spaţiu

\d Orice cifră

\D Orice caracter care nu e cifră

\b O poziţie dintre un cuvînt şi un non-cuvînt (zero caractere)

\B O poziţie care nu este între un cuvînt şi un non-cuvînt

Numerele intregi pozitive pot fi privite ca un sir lung format doar din cifre:^\d+$.

Numerele intregi negative, spre deosebire de cele pozitive, sunt prefixate de un semn minus:^-\d+$.

Numerele intregi in general, fara a face diferenta intre cele pozitive si cele negative, sunt formate dintr-un sir de cifre prefixate de 0 sau 1 semne minus:^-{0,1}\d+$.

Numerele reale pozitive pot fi vazute ca fiind formate din 0 sau mai multe cifre urmate de 0 sau 1 puncte (se poate inlocui cu virgula pentru zecimale) dupa care urmeaza din nou un set de cifre:^\d*\.{0,1}\d+$.

Numerele reale negative sunt declarate la fel ca cele pozitive cu diferenta ca sunt prefixate de semnul minus:^-\d*\.{0,1}\d+$.

Numerele reale in general, fara a face diferenta dintre cele pozitive si cele negative, pot fi gasite adaugand in sablon posibilitatea existentei a 0 sau 1 semne minus:^-{0,1}\d*\.{0,1}\d+$.

Numerele de telefon pot fi vazute ca o serie de minim 3 cifre (numere scurte) care pot fi prefixate de semnul plus:^\+?[\d\s]{3,}$.

Page 3: Expresii Regulate

Anii ii putem potrivi in sablon ca fiind siruri de cifre din care primele doua sunt 19 sau 20 dupa care urmeaza inca fix doua cifre:^(19|20)[\d]{2,2}$.

IP-urile (IPv4) pot fi vazute ca 4 grupuri de cifre separate de puncte. Pentru a ne asigura ca valorile fiecaruia din cele 4 grupuri nu depasesc 255 trebuie create mai multe cazuri folosind operatorul OR (|):^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

Pentru validarea unei adrese e-mail avem cifre, litere si cateva semne speciale (._%+-) urmate de @ dupa care urmeaza numele domeniului si TLD-ul:^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$.

Numele domeniului e format din cifre, litere si semnele punct (.) pentru subdomenii sau domeniile cu SLD si semnul minus (-), dupa care urmeaza de la doua la 4 litere TLD-ul:^[A-Z0-9.-]+\.[A-Z]{2,4}$.

Pentru a verifica inexistenta unei valori avem semnul de inceput si cel de sfarsit de sablon fara nici un alt caracter intre ele:^$.

Pentru verificarea spatiilor albe, verificam spatiile simple (tasta space) si caracterele TAB:^\s[\t]*$.

Verificarea finalizarii randului indiferent de sistemul de operare se face cautand \r (UNIX) \r\n (Windows):[\r\n]$.