UVOD: Šta su regularni izrazi?

Regularni izrazi (engl. Regular Expressions, skraćeno regex) su specijalni obrasci koji se koriste za pretragu, proveru i manipulaciju teksta. Možete ih zamisliti kao „pametniji“ način pretraživanja teksta, gde se mogu postaviti pravila kako treba da izgleda ono što se traži.

Možete ih posmatrati i kao šablone koji pomažu računarima da pronađu, provere ili zamene delove teksta prema nekim unapred postavljenim pravilima.

Regularnim izrazom se zadaje obrazac (engl. pattern) koji tražimo u tekstu, a pronađeni odgovarajući tekst se naziva poklapanje (engl. match). Kažemo da se dati obrazac poklapa sa određenim tekstom, a sam postupak traženja (engl. pattern matching) možemo približno da prevedemo kao uklapanje (teksta) u obrazac.

Primeri iz svakodnevnog života:
  • Kada unosimo e-mail adresu na nekom sajtu, sistem proverava da li ona sadrži "@" i tačku na pravom mestu – to se može uraditi pomoću regularnih izraza.
  • Ako se traže svi telefonski brojevi u nekom tekstu, regularni izrazi mogu da pronađu samo one koji imaju ispravan format.
  • Kada se u nekom programu koristi opcija "Find and Replace", regularni izrazi mogu pomoći da se pronađu sve pojave određene reči, čak i ako su napisane različitim stilovima (npr. „pas“, „pAs“, „PAS“).
Kako izgledaju regularni izrazi?

Recimo da treba da se pronađu svi brojevi u tekstu. Umesto da se piše gomila koda, može se koristiti izraz "\d+"

  • \d znači „bilo koji broj“ (0-9),
  • + znači „jedan ili više ponavljanja“.

Ako treba pronaći sve reči koje počinju slovom "P", može se koristiti "\bP\w+"

  • \b označava početak reči,
  • P znači da mora početi slovom P,
  • \w+ označava „bilo koja slova posle P“.


LINKOVI za dalji rad na času (ONLINE alati)

U nastavku ćemo isprobavati različite regularne izraze. Isprobaćemo različite varijante za primere koji slede. Koristićemo jednu od online platformi:


Struktura regularnih izraza

Regularni izrazi koriste kombinaciju:

  • Običnih znakova: Slova, brojevi i drugi karakteri koji se doslovno prepoznaju.
  • Specijalnih znakova: Znakovi sa posebnim značenjem, poput . (bilo koji znak) ili * (nula ili više ponavljanja).

Neki od specijalnih znakova su:

  • [] - uglaste zagrade
  • . - tačka
  • ^ - karet (kvačica)
  • $ - dolar
  • * - zvezda
  • + - plus
  • ? - upitnik
  • {} - vitičaste zagrade
  • () - male zagrade
  • |- alternacija (uspravna linija)

[ ] - Uglaste zagrade - se koriste da označe skup karaktera sa kojima se želi poklopiti.

Na primer, ako je regularni izraz [abc] sa njim se podudara bilo koji string koji sadrži bilo a, b, ili c.

Proverimo da li se sledeći primeri stringova podudaraju sa ovim šablonom

String Da li se poklapa (match) Razlog
a 1 poklapanje string sadrži jedno slovo a
car 2 poklapanja string sadrži a i c
jelo 0 poklapanja string ne sadrži ni a, ni b, ni c
abc 3 poklapanja string sadrži sva tri - a, b i c

 

Napomena: Može se navesti i opseg znakova koristeći znak - (minus) unutar uglastih zagrada.

  Na primer,

  • [a-e] označava isto što i [abcde]
  • [0-3] označava isto što i [0123]

Napomena:
 Ako skup karaktera unutar uglastih zagrada započnemo kvačicom ^, onda definišemo negaciju, odnosno "kažemo" da treba pronaći svaki znak koji nije naveden unutar uglastih zagrada.


. - Tačka - specificira bilo koji pojedinačni karakter (osim novog reda '\n').

Na primer, ako je regularni izraz  (tri tačke za redom), on se poklapa sa stringovima koji sadrže tri karaktera.

Provera da li se sledeći primeri stringova podudaraju sa ovim šablonom:

String Da li se poklapa (match) Razlog
car 1 poklapanje string sadrži tri slova ( a, b, s)
i 0 poklapanja string ne sadrži tri slova
pas 1 poklapanje string sadrži tri slova
abcd 1 poklapanje string sadrži tri slova
abcjkl 2 poklapanja string sadrži 6 slova ( 3+3 )

^ - Caret (kvačica) - označava da string počinje određenim znakom. 

Na primer, ako je regularni izraz ^m sa njim se poklapa bilo koji string koji počinje slovom "m"

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
maca 1 poklapanje maca počinje sa "m"
m 1 poklapanje m počinje sa "m"
Miloš 0 poklapanja Miloš ne počinje sa "m"
sms 0 poklapanja sms ne počinje sa "m"

$ - znak za dolar - specificira string koji se završava sa određenim znakom.

Na primer, ako je regularni izraz k$ sa njim se poklapa bilo koji string koji se završava slovom "k"

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
ponedeljak 1 poklapanje ponedeljak se završava sa "y"
sok 1 poklapanje sok se završava sa "k"
papagaj 0 poklapanja papagaj se ne završava sa"y"

* - Zvezdica - se poklapa sa nula ili više pojavljivanja šablona. 

Na primer, ako je regularni izraz sa*t sa njim se poklapa string koji ima bilo koji broj slova a između slova s i t [uključujući nulu, tj da se ni ne pojavljuje].

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
sat 1 poklapanje sat ima jedno slovo  a između s i t
st 1 poklapanje st ima nula pojavljivanja slova a između s t
saaaat 1 poklapanje saaaat ima tri slova a između s t
set 0 poklapanja setima slovo e (ne a) između s i t
satsaat 2 poklapanja satsaat ima a na dva mesta ( sat i saat)

+ - Plus znak - odgovara jednom ili više pojavljivanja navedenog šablona.

Na primer, ako je regularni izraz sa+t sa njim se poklapa string koji ima ima jedno ili više slova a između s i t

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
sat 1 poklapanje satima jedno slovo a između s i t
st 0 poklapanja st nema ni jedno slovo a između s i t
satisaat 2 poklapanja satisaat ima dva odgovarajuća podstringa ( sat i saat)
salt 0 poklapanja a nije ispred slova t u reči salt

? - Upitnik - se poklapa sa nijednim ili jednim pojavljivanjem šablona.

Na primer, ako je regularni izraz sa?t sa njim se poklapa string koji ima ima nijedno ili jedno slovo a između slova s i t

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
sat 1 poklapanje sat ima jedno slovo a između s i t
st 1 poklapanje st ima nula slova a između s i t
saaaaaat 0 poklapanja saaaaat ima više od jednog slova a između s i t
pasat 1 poklapanje pasat ima jedno slovo a između s i t

{} - vitičaste zagrade - se koriste za specificiranje opsega ponavljanja šablona.

Na primer, ako je regularni izraz a{2,3} sa njim se poklapa string u kojem ima najmanje 2, a najviše 3 slova a sa leve strane nekog slova.

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
abcdabc 0 poklapanja ima samo jedno a levo od nekog drugog karaktera
abcdaac 1 poklapanje abcdaac ima dva slova  a levo od nekog drugog karaktera
aabc saaat 2 poklapanja aabc saaat ima grupe od dva i tri slova a levo od nekog drugog karaktera

| - uspravna linija (Alternation) (naći ćete ga sa shift+ž na engleskoj tastaturi) - koristi se kao operator or.

Na primer, ako je regularni izraz a|b sa njim se poklapa string koji ima ili a ili b

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
cde 0 poklapanja string nema ni a ni b
car 1 poklapanje postoji slovo a u stringu
abcdacd 3 poklapanja string ima dva a i jedno b

() - male zagrade - se koriste za grupisanje podšablona.

Na primer, ako je regularni izraz (a|b|c)xz sa njim se poklapa bilo koji string koji ima ili a ili b ili c iza kojih sledi xz

Proverimo da li se sledeći primeri stringova poklapaju sa ovim šablonom:

String Da li se poklapa (match) Razlog
baxz 1 poklapanje a ili b je praćeno sa xz
ba xz 0 poklapanja postoji razmak između ba i xz
axz cabxz 2 poklapanja a je praćeno sa xz i b je praćeno sa xz

Specijalni skupovi karaktera (specijalne sekvence)

Neki od specijalnih skupova karaktera su navedeni u nastavku:

\A - Poklapa se ako su specificirani karakteri na početku stringa.

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \Asun .

String Da li se poklapa (match) Razlog
sunce poklapa se nstring počinje sa sun
zasun Ne poklapa se string ne počinje sa sun

\b - Poklapa se ako su specificirani karakteri na početku ili na kraju reči.

Prvi primer: ako je regularni izraz \bras sa njim se poklapa bilo koji string koja ima ras na početku.

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \bras.

String Da li se poklapa (match) Razlog
raspad poklapa se ras je na početku reči (raspad)
jedna rasa poklapa se ras je na početku reči (jedna rasa)
narastao Ne poklapa se Slovo n se nalazi na početku reči (narastao)

Drugi primer: ako je regularni izraz rad\b sa njim se poklapa bilo koja reč u stringu koja ima rad na kraju.

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom rad\b .

String Da li se poklapa (match) Razlog
ide rad poklapa se rad je na kraju reči (ide rad)
zarad mira u kući poklapa se frad je na kraju riječi (zarad mira u kući)
mala zarada Ne poklapa se nema rad na kraju reči

\B - Poklapa se ako se specificirani karakteri ne nalaze na početku ili na kraju reči.

Na primer, ako je regularni izraz \Brad sa njim se poklapa bilo koja reč u stringu koja nema rad na početku.

String Da li se poklapa (match) Razlog
radnici Ne poklapa se string ima rad na početku reči
dobar rad Ne poklapa se string ima rad na početku reči
zarada poklapa se string nema rad na početku reči

Drugi regex primer: ako je regularni izraz rad\B sa njim se poklapa bilo koja reč u stringu koja nema rad na kraju

String Da li se poklapa (match) Razlog
radnici poklapa se niz nema rad na kraju reči
dobar rad Ne poklapa se niz ima rad na kraju reči
zarada poklapa se niz nema rad na kraju reči

\d - Poklapa se sa bilo kojom decimalnom cifrom. To je isto kao da se piše [0-9]

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \d .

String Da li se poklapa (match) Razlog
12abc3 3 poklapanja postoje tri decimalne cifre u stringu
programiranje Ne poklapa se u stringu nema decimalnih cifara

\D - Poklapa se sa bilo kojom ne-decimalnom cifrom. To je isto kao da se piše ^[0-9].

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \D .

String Da li se poklapa (match) Razlog
12abc3 3 poklapanja postoje tri karaktera koji nisu decimalne cifre ( a, b i c)
1234 Ne poklapa se ne postoji nijedan karakter koji nije decimalna cifra

\s - Poklapa se ako string sadrži bilo koji znak razmaka. To bi bilo kao da se piše [ \t\n\r\f\v] .

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \s .

String Da li se poklapa (match) Razlog
proba hora 1 poklapanje string sadrži jedan razmak
program Nema poklapanja string ne sadrži ni jedan razmak

\S - Poklapa se ako string sadrži bilo koji znak koji nije razmak. To bi bilo kao da se piše [^ \t\n\r\f\v]

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \S .

String Da li se poklapa (match) Razlog
a b 2poklapanja niz sadrži dva karaktera koji nisu razmaci (a i b)
  Nema poklapanja string ne sadrži karaktere koji nisu razmaci

\w - Odgovara bilo kojem alfanumeričkom karakteru (slova, brojevi, _). To bi bilo kao da se piše [a-zA-Z0-9_] .

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \w .

String Da li se poklapa (match) Razlog
a2&": ;3 3 poklapanja niz sadrži tri alfanumerička karaktera ( a, 2 i 3 )
%"> ! Nema poklapanja  

 

Napomena: Donja crta ( _ ) se takođe smatra alfanumeričkim karakterom.


\W - Odgovara bilo kojem nealfanumeričkom znaku. To bi bilo kao da se piše [^a-zA-Z0-9_] .

Proverimo da li se sledeći primeri stringova poklapaju sa regex šablonom \W .

String Da li se poklapa (match) Razlog
a2%c 1 poklapanje string sadrži jedan znak koji nije alfanumerički ( %)
kikiriki Nema poklapanja string ne sadrži znakove koji nisu alfanumerički


Linkovi:

 
 

Last modified: Thursday, 11 December 2025, 2:41 AM