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.
Table 17.1. Regex – indikatori
| Konstrukt | ...odgovara sljedećem | 
|---|---|
| (?i) | omogućavanje podudaranja bez razlikovanja veličine slova (prema zadanim vrijednostima uzorak razlikuje velika i mala slova) | 
Table 17.2. 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 | 
Table 17.3. 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 | 
Table 17.4. 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) | 
Table 17.5. 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) | 
Table 17.6. 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] | 
Table 17.7. Regex – granični podudarivači
| Konstrukt | ...odgovara sljedećem | 
|---|---|
| ^ | početak retka | 
| $ | kraj retka | 
| \b | granica riječi | 
| \B | granica svega osim riječi | 
Table 17.8. 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.
Table 17.9. 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.
Table 17.10. 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 | 
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.
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.
Table 17.11. 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. |