Skip navigation.
Početna stranica

Regularni izrazi (regular expressions)

Sažetak

U ovom članku je objašnjenja upotreba regularnih izraza (regular expression) u Odvjetničkom uredu.

Detaljni opis

Regularni izraz je izraz kojim se definira uzorak koji se koristi za pretraživanje teksta. U ovom članku ćemo regularne izraze objasniti na primjeru sudskih brojeva spisa, a to je upravo područje u kojem se regularni izrazi i koriste u Odvjetničkom uredu.

Ukoliko želimo pronaći točno određeni broj spisa (npr. P-1234/08) jednostavno u npr. Wordu pritisnemo Ctrl+F, u pretraživaču teksta upišemo P-1234/08 i pritisnemo traži. Ali što ako želimo pronaći bilo koji sudski broj: P-1234/08 ali i Ovr-123/2008. Iako zadatak na prvi pogled izgleda kao nemoguća misija, ako malo bolje pogledamo prethodna dva broja vidimo da imaju neke sličnosti. Oba počinju velikim slovom, zatim se u drugom broju pojavljuje nekoliko malih slova, znak -, nekoliko brojeva, znak / te još nekoliko brojeva. Upravo smo opisno definirali uzorak i sad ga trebamo prevesti u regularni izraz:

  1. [A-Z] - Sudski broj počinje velikim slovom. Izraz [A-Z] znači, pronađi bilo koji znak između A i Z (u našem slučaju P-1234/08 i Ovr-123/2008).
  2. [a-z]* - [a-z] izraz znači, pronađi bilo koji znak između a i z, a kvantifikator *, niti jednom ili više puta (u prvom broju nemamo malih slova, a u drugom dva: Ovr-123/2008).
  3. - - sljedeći znak je u oba broja - pa ga upisujemo literalno (P-1234/08 i Ovr-123/2008).
  4. [0-9]+ - Nakon povlake imamo nekoliko brojeva. Izraz [0-9] će pronaći bilo koji znak između 0 i 9 (dakle broj), a kvantifikator + označava da taj izraz mora biti pronađen jednom ili više puta (u našem slučaju P-1234/08 i Ovr-123/2008).
  5. / - sljedeći znak je /, njega upisujemo literalno (P-1234/08 i Ovr-123/2008).
  6. [0-9]+ - i na kraju imamo ponovo više brojeva (P-1234/08 i Ovr-123/2008).

Dakle naš regularni izraz za pronalaženje sudskih brojeva bi bio [A-Z][a-z]*-[0-9]+/[0-9]+. Ovaj izraz će pronaći i Pn-123/05 i Rev-124/08, ali neće R1-123/08, a ni Gž-123/08, jer drugi izraz ([a-z]*) pronalazi samo mala slova engleske abecede, a u R1-123/08 imamo broj 1, a u Gž-123/08 malo slovo ž. Da bi naš regularni izraz pronašao i ove brojeve, u [a-z] ćemo dopisati brojeve 1 i 2 (postoje samo R1 i R2 upisnici) i slovo ž, pa će naš izraz postati [A-Z][a-z12ž]*-[0-9]+/[0-9]+.

U gornjem primjeru smo koristili staru Unix sintaksu regularnih izraza, jer nju u nešto izmijenjenom i skraćenom obliku podržava i Microsoft Word. Postoje POSIX i Perl ekstenzije koje pojednostavnjuju sintaksu, a podržavaju i druge jezike (uključujući i hrvatski). Na primjer izraz [A-Z] se može napisati i kao \u, s tim de će izraz [A-Z] pronaći samo slova engleske abecede, dok će \u pronaći i Č,Ć,Đ,Š i Ž).

Regularni izrazi

Izraz Opis
. Točka pronalazi bilo koji znak.
[ ] Pronalazi bilo koji znak koji se nalazi u uglatim zagradama. Na primjer [abc] pronalazi a, b i c, ali ne i ostale znakove.
[ - ] Pronalazi bilo koji znak koji se nalazi u uglatim zagradama između ova dva znaka. Na primjer [a-c] pronalazi a, b i c, ali ne i ostale znakove.
[^ ] Pronalazi bilo koji znak osim onih koji se nalaze u uglatim zagradama. Na primjer [^abc] pronalazi sve znakove osim a, b i c.
^ Ukoliko je prvi znak regularnog izraza označava da izraz mora biti pronađen na početku linije (u Microsoft Wordu odlomka).
$ Znak dolar na kraju regularnog izraza označava da izraz mora biti pronađen na kraju linije (u Microsoft Wordu odlomka).
* Znak * pronalazi 0 ili više puta prethodni znak. Na primjer bo* će pronaći b, bo i boo.
+ Znak + pronalazi jednom ili više puta prethodni znak. Na primjer bo* će pronaći bo i boo, ali neće b.
? Znak ? pronalazi niti jednom ili jednom prethodni znak. Na primjer bo? će pronaći b i bo, ali neće boo.
{n} Gdje je n broj, pronalazi prethodni znak točno n puta. Na primjer o{2} pronalazi točno oo.
{n,} Gdje je n broj, pronalazi prethodni znak najmanje n puta. Na primjer o{2,} pronalazi oo, ooo, oooo, itd.
{n,m} Gdje su n i m brojevi, pronalazi prethodni znak najmanje n, a najviše m puta. Na primjer o{2,3} pronalazi oo i ooo.
( ) Pronalazi bilo koju sekvencu unutar zagrada. Na primjer (ab)+ pronalazi ab, abab, ababab. Zagrade nam služe za grupiranje znakova, tako da kvantifikatori '*', '+', '?' i {} na njih gledaju kao na jedan znak.
| Logički ILI operator. Na primjer prvo|drugo pronalazi prvo ili drugo, dok R(1|2) pronalazi R1 ili R2.
\ Obrnuta kosa crta tretira specijalne znakove literalno. Na primjer znak + označava pronađi prethodni znak jednom ili više puta, dok \+. Pronalazi baš +.
\n Pronalazi znak kraja linije.
\r Pronalazi carriage-return znak. U Windowsima se kraj linije označava s \n\r, ali će i sami '\n' u većini programa pronaći kraj linije.
\t Pronalazi tabulator.
\a,\e,\f,\v Osim \n, \r i \t ostali kontrolni znakovi su praktično izumrli, pa ih ovdje nema potrebe opisivati.

Perl proširenja

Izraz Opis
\C Pronalazi bilo koji znak. Ekvivalentno točki ('.').
\d Pronalazi broj (digit). Ekvivalentno izrazu [0-9].
\D Pronalazi bilo koji znak osim brojeva. Ekvivalentno izrazu [^0-9].
\l Pronalazi bilo koje malo slovo (lower case) uključujući i internacionalna slova. Za hrvatski jezik ekvivalentno izrazu [a-zčćđšž].
\L Pronalazi bilo koji znak osim malog slova. Za hrvatski jezik ekvivalentno izrazu [^a-zčćđšž].
\s Pronalazi bilo koji razmak (space) uključujući i tabulatore. Ekvivalentno izrazu [ \t\n\r\f\v].
\S Pronalazi bilo koji znak koji nije razmak (tabulator). Ekvivalentno izrazu [^ \t\n\r\f\v].
\u Pronalazi bilo koje veliko slovo (upper case)uključujući i internacionalna slova. Za hrvatski jezik ekvivalentno izrazu [A-ZČĆĐŠŽ].
\U Pronalazi bilo koji znak osim velikih slova. Za hrvatski jezik ekvivalentno izrazu [^A-ZČĆĐŠŽ].
\w Pronalazi bilo koji word znak. Word znakovi su slova, brojevi i podvučeno. Uglavnom irelevantno za obične korisnike, naime radi se o znakovima koji se u C/C++ jeziku mogu koristiti za varijable, funkcije itd.
\W Pronalazi bilo koji osim word znakova.
\0dd Pronalazi znak s ovim oktalnim ASCII/ANSI kodom. Gdje je dd jedan ili više oktalnih brojeva.
\xXX Pronalazi znak s ovim heksadecimalnim ASCII/ANSI kodom. Gdje je xx jedan ili heksadecimalni broj.
\Q Svi znakovi koji slijede nakon ovog znaka sve do \E znaka se tretiraju literalno.
\Q Zatvara slijed literalnih znakova započet s \Q znakom.

Svi znakovi osim ".", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^" "\" and "$" su literalni znakovi. Prethodno popisani znakovi postaju literalni ako ispred njih prethodi znak "\". Literalni znak je onaj znak koji pronalazi sam sebe.

Reference

Nema

Odnosi se na

Odvjetnički ured 4.1.0.93 (Novije verzije mogu imati i dodatne izraze).