Uvod u svet regularnih izraza
Regularni izrazi, ili skraćeno Regex, mogu delovati komplikovano. Ali ne brinite, uz malo truda, sve će postati jasno!
Zajedno ćemo istražiti svet regularnih izraza i njihove specifične obrasce. Analiziraćemo te naizgled nejasne kombinacije znakova i razjasniti značenje svakog pojedinačnog simbola u regularnom izrazu.
Nakon čitanja ovog teksta, bićete spremni da samostalno kreirate svoje regularne izraze i koristite ih u raznim situacijama. Na kraju ćemo navesti i nekoliko online alata koji vam mogu pomoći u testiranju Regex-a, kako biste mogli da razvijate svoje obrasce i proveravate njihovu efikasnost.
Šta su regularni izrazi?
Regularni izrazi predstavljaju niz znakova koji se koriste kao šablon za pretraživanje i manipulaciju tekstom. Oni su moćan alat za pronalaženje određenih uzoraka unutar tekstualnih podataka.
Na primer, ako želimo da proverimo da li neki string sadrži reč „jabuka“, možemo koristiti regularni izraz „/jabuka/“ za pretragu. Slično tome, „/[0-9]/“ nam omogućava da proverimo da li string sadrži cifru između 0 i 9.
Primena regularnih izraza
Regularni izrazi su široko rasprostranjeni u savremenim web tehnologijama. Koriste se za validaciju web formi, pretraživanje interneta, u leksičkim analizatorima unutar razvojnih okruženja (IDE), tekst editorima i softveru za obradu dokumenata.
Svi smo koristili kombinaciju „CTRL + F“ za pretragu teksta, što je u suštini jednostavan primer upotrebe regularnih izraza.
Pre nego što nastavimo, pogledajmo jedan često korišćen regularni izraz:
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Ako ne prepoznajete njegovu namenu, bez brige! Sigurni smo da će vam sve biti jasno nakon ovog članka.
Počnimo sa osnovama regularnih izraza.
Osnovni simboli (tokeni)
Razmotrimo različite simbole (tokene) unutar regularnog izraza koji smo upravo prikazali:
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Vidimo da se sastoji iz različitih simbola ili tokena. Hajde da razjasnimo njihovo značenje:
Token | Značenje |
^ | Ovaj token označava početak stringa. |
(…) | Ovo označava grupu unutar koje se „hvata“ sadržaj. |
[…] | Znakovi u uglastim zagradama označavaju bilo koji znak od navedenih. Na primer, [abc] znači da će se podudarati a, b ili c. |
a-z | Skup malih slova od a do z. Važno je napomenuti da je Regex „case-sensitive“ (razlikuje velika i mala slova). |
A-Z | Skup velikih slova od A do Z. |
0-9 | Cifre od 0 do 9. |
_ | Ovo odgovara znaku _. |
\ | Ovo je „escape“ karakter, koristi se za „izbegavanje“ specijalnog značenja određenih znakova. |
. | Ovo odgovara znaku tačka “.”. Koristi se jer je tačka „.“ u regularnim izrazima poseban token koji odgovara bilo kom karakteru. |
+ | Ovo je kvantifikator koji označava jedno ili više pojavljivanja karaktera sa kojim se koristi. Na primer, a+ označava jedno ili više pojavljivanja karaktera a. |
– | Ovo odgovara znaku crtica „-„. |
@ | Ovo odgovara znaku „@“. |
{} | Ovo je još jedan kvantifikator koji se koristi za označavanje broja pojavljivanja znaka. Na primer, a{3} označava tačno 3 pojavljivanja slova a. |
$ | Ovo označava kraj stringa. |
Analiza datog Regex obrasca
Sada, sa osnovnim znanjem o tokenima, pokušaćemo da dešifrujemo dati regularni izraz:
^([a-zA-Z0-9_-.]+)
znači da tražimo string koji počinje sa jednim ili više alfanumeričkih znakova, donjih crta, crtica ili tačaka. Na primer, „user_name.01“ se uklapa u ovaj obrazac. Bitno je napomenuti da se ovde ne očekuju svi navedeni simboli, već bilo koji od njih: [a-zA-Z0-9_-.]- Znak „@“ odgovara jednom pojavljivanju znaka @. Dodavanjem prethodnom primeru, nešto poput „user_name.01@“ bi bilo ispravno.
([a-zA-Z0-9_-.]+)
je slično prvom delu. Takođe znači da tražimo niz koji sadrži jedan ili više alfanumeričkih znakova, donjih crta, crtica ili tačaka. Dodavanjem na primer, „user_name.01@domain“ bi zadovoljio uslov.- Kao što ste verovatno pretpostavili, ovo je obrazac za e-mail adresu. Sledeće, „.“ odgovara znaku tačka. Nastavljajući sa primerom, „user_name.01@domain.„
([a-zA-Z]{2,5})$
znači da se string završava sa 2 do 5 alfabetskih karaktera, velikih ili malih slova. Dodavanjem „.com“ na prethodni primer, dobijamo „[email protected]“ – uobičajeni format e-mail adrese.
Dakle, kombinujući sve navedeno, tražimo obrazac e-mail adrese. Sada možemo koristiti ovaj izraz da validiramo bilo koju e-mail adresu. Ako probna e-mail adresa odgovara ovom obrascu, možemo zaključiti da je ona validna.
P.S. Ovo je obrazac za najčešće e-mail adrese na internetu.
Vrste tokena
Mnogi tokeni se mogu koristiti u različitim kombinacijama unutar regularnog izraza za opisivanje širokog spektra uzoraka. U nastavku ćemo pogledati različite tipove tokena koji se koriste u regularnim izrazima i najčešće korišćene primere u svakoj kategoriji.
Osnovni tokeni
Krenimo sa osnovnim tokenima, koji se koriste u gotovo svim regularnim izrazima. Prvo ćemo naučiti o njima.
Token | Značenje |
\r | Ovo odgovara znaku za povratak na početak reda. |