# Regularni izrazi

Regularni izrazi Segmentacija Pretraživanje

Regularni izrazi (skraćeno – regex) koji se koriste za pretraživanje i pravila segmentacije su oni koje podržava Java. Više konkretnih podataka možete pronaći u dokumentaciji o regularnim izrazima u Javi. Dodatne upute i primjeri slijede u daljnjem tekstu.

Ovo je poglavlje namijenjeno naprednim korisnicima koji trebaju mogućnost određivanja vlastitih varijanti pravila segmentacije ili složenije i efikasnije načine pretraživanja.

Regex – indikatori

Konstrukt | ...odgovara sljedećem
--- | ---
(?i) | omogućavanje podudaranja bez razlikovanja veličine slova (prema zadanim vrijednostima uzorak razlikuje velika i mala slova)

Regex – znak

Konstrukt | ...odgovara sljedećem
--- | ---
x | znak x, osim u sljedećim slučajevima...
\uhhhh | znak heksadecimalne vrijednosti 0xhhhh
\t | znak tabulatora ('\u0009')
\n | znak novoga retka ('\u000A')
\r | znak kraja retka ('\u000D')
\f | znak nove stranice ('\u000C')
\a | znak zvona ('\u0007')
\e | prekidni znak ('\u001B')
\cx | kontrolni znak koji odgovara znaku x
\0n | znak oktalne vrijednosti 0n (0 <= n <= 7)
\0nn | znak oktalne vrijednosti 0nn (0 <= n <= 7)
\0mnn | znak oktalne vrijednosti 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh | znak heksadecimalne vrijednosti 0xhh

Regex – citat

Konstrukt | ...odgovara sljedećem
--- | ---
\ | ništa, ali citira sljedeći znak; potreban je kada želite upisati neki od metaznakova !$()*+.<>?[\]^{|} da predstavljaju same sebe
\\ | primjera radi, ovo je znak obrnute kose crte
\Q | ništa, ali citira sve znakove do \E
\E | ništa, ali okončava citiranje započeto s \Q

Regex – klase za blokove i kategorije Unicode

Konstrukt | ...odgovara sljedećem
--- | ---
\p{InGreek} | znak u grčkome bloku (jednostavni blok)
\p{Lu} | veliko slovo (jednostavna kategorija)
\p{Sc} | simbol valute
\P{InGreek} | bilo koji znak osim znaka iz grčkoga bloka (negacija)
[\p{L}&&[^\p{Lu}]] | bilo koje slovo osim velikih slova (oduzimanje)

Regex – klase znakova

Konstrukt | ...odgovara sljedećem
--- | ---
[abc] | a, b ili c (jednostavna klasa)
[^abc] | bilo koji znak osim a, b ili c (negacija)
[a-zA-Z] | a do z ili A do Z, uključujući navedena slova (raspon)

Regex – unaprijed određene klase znakova

Konstrukt | ...odgovara sljedećem
--- | ---
. | bilo koji znak (osim onih za okončanje retka)
\d | znamenka: [0-9]
\D | nije znamenka: [^0-9]
\s | znak bjeline: [ \t\n\x0B\f\r]
\S | nije praznina: [^\s]
\w | znak riječi: [a-zA-Z_0-9]
\W | nije riječ: [^\w]

Regex – granični podudarivači

Konstrukt | ...odgovara sljedećem
--- | ---
^ | početak retka
$ | kraj retka
\b | granica riječi
\B | granica svega osim riječi

Regex – pohlepni kvantifikatori

Konstrukt | ...odgovara sljedećem
--- | ---
X? | X, jednom ili nijednom
X* | X, nula ili više puta
X+ | X, jednom ili više puta

Pohlepni kvantifikatori pokušavaju pronaći što je moguće više podudaranja. Primjerice, a+ pronalazi aaa u aaabbb.

Regex – reluktantni (nepohlepni) kvantifikatori

Konstrukt | ...odgovara sljedećem
--- | ---
X?? | X, jednom ili nijednom
X*? | X, nula ili više puta
X+? | X, jednom ili više puta

Nepohlepni kvantifikatori pokušavaju pronaći što je moguće manje podudaranja. Primjerice, a+? pronalazi prvo slovo a u aaabbb.

Regex – logički operatori

Konstrukt | ...odgovara sljedećem
--- | ---
XY | X nakon kojega slijedi Y
X|Y | ili X ili Y
(XY) | XY kao jedna skupina

## Alati za regex i primjeri korištenja

Regularni izrazi Alati
Regularni izrazi Primjeri korištenja

Za sastavljanje i testiranje regularnih izraza dostupno je više interaktivnih alata. U načelu djeluju prema manje-više jednakome obrascu (na sljedećoj slici možemo vidjeti primjer alata Regular Expression Tester): regularnim izrazom (prvo polje) analizira se tekst i pronalaze tražene vrijednosti koje se prikazuju u tekstnome okviru rezultata.

Regular Expression Tester

Za sustave Windows, Linux i FreeBSD postoji i samostalni alat The Regex Coach. Funkcionira uglavnom na isti način kao što je to prikazano u gornjemu primjeru.

I sȃm program OmegaT nudi dobru zbirku korisnih regularnih izraza (pogledajte izbornik Mogućnosti > Segmentacija). Na sljedećem popisu imamo izraze koji mogu biti korisni pri pretraživanju prijevodne memorije.

Regex – primjeri regularnih izraza u prijevodima

Regularni izraz | Za pronalaženje sljedećega:
--- | ---
(\b\w+\b)\s\1\b | dvostruke riječi
[\.,]\s*[\.,]+ | zarez ili točka, nakon čega slijede razmaci pa još jedan zarez ili točka
\. \s+$ | dodatni razmaci nakon točke na kraju retka
\s+a\s+[aeiou] | engleski: ispred riječi koje počinju samoglasnicima u načelu se treba nalaziti neodređeni član „an”, a ne „a”
\s+an\s+[^aeiou] | engleski: provjera na istome načelu kao gornja, osim što se radi o riječima koje počinju suglasnicima („a”, a ne „an”)
\s{2,} | više od jednoga razmaka
\.[A-Z] | točka nakon koje slijedi veliko slovo – moguće je da nedostaje razmak između točke i početka nove rečenice
\bis\b | traženje „is”, a ne „this” ili „isn't” itd.