# Preprocessing
& ==> &
< ==> <
> ==> >
\r ==>
# XML/HTML entities
& ==> &
\< ==> <
\> ==> >
# Punctuation, paragraphs, spaces
([×/,.():"»«?!'“”°‘’…•\-_&–—©*%#=}$@{\[\]+;]) ==> $1
&((amp)|(lt)|(gt)); ==> &$1;
# \.\.(\.)+ ==> $txt
^ ==>
$ ==>
\s ==>
# Words
==>
==>
==>
==>
==>
# Cleanup
(\n*) ==> $1
==>
# E-mail (case-insensitive regex matching is denoted with '-->')
([\p{L}0-9_-]+\.)*[\p{L}0-9_-]+@((([0-9a-z~]+)|([_!*'()-]))+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6} --> $txt
# URL
(((ftp)|(https?))://)?((([0-9a-z~]+)|([_!*'()-]))+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6}(/(([0-9a-z~]+)|([_!*'().;?:@=+$,%#-])|(&))+)*/? --> $txt
# Brioni rule #2: locuj dva kosa z obojesticno piko, ce je drugi z veliko zacetnico
([^<.]+)\.(\p{Lu}) ==> $1.$2
([^<]+)-((a)|(evemu)|(evskega)|(i)|(jevega)|(jevska)|(jevskimi)|(jinemu)|(oma)|(ovim)|(ovski)|(e)|(evi)|(evskem)|(ih)|(jevem)|(jevske)|(jevsko)|(jini)|(ov)|(ovima)|(ovskih)|(em)|(evih)|(evskemu)|(ja)|(jevemu)|(jevskega)|(ji)|(jinih)|(ova)|(ovimi)|(ovskim)|(ema)|(evim)|(evski)|(je)|(jevi)|(jevskem)|(jih)|(jinim)|(ove)|(ovo)|(ovskima)|(ev)|(evima)|(evskih)|(jem)|(jevih)|(jevskemu)|(jin)|(jinima)|(ovega)|(ovska)|(ovskimi)|(eva)|(evimi)|(evskim)|(jema)|(jevim)|(jevski)|(jina)|(jinimi)|(ovem)|(ovske)|(ovsko)|(eve)|(evo)|(evskima)|(jev)|(jevima)|(jevskih)|(jine)|(jino)|(ovemu)|(ovskega)|(u)|(evega)|(evska)|(evskimi)|(jeva)|(jevimi)|(jevskim)|(jinega)|(ju)|(ovi)|(ovskem)|(evem)|(evske)|(evsko)|(jeve)|(jevo)|(jevskima)|(jinem)|(om)|(ovih)|(ovskemu)) ==> $1-$2
(\d+)-((timi)|(im)|(ima)|(a)|(imi)|(e)|(o)|(ega)|(ti)|(em)|(tih)|(emu)|(tim)|(i)|(tima)|(ih)|(ta)|(te)|(to)|(tega)|(tem)|(temu)) ==> $1-$2
' ==> '
(\d+)([.,:])(\d+) ==> $1$2$3
((\p{L})|([Oo]k)|(Ur)|([Dd]r)|([Šš]t)|([Ss]tr)|([Oo]z)|([Ii]td)|([Nn]pr)|([Ss]v)|([Ii]tn)|([Tt]el)|([Oo]dst)|([Mm]ed)|([Ii]pd)|([Aa]ngl)|([Zz]v)|([Zz]ap)|([Pp]rof)|([Oo]p)|([Mm]ag)|([Ii]t)|([Pp]rim)|([Oo]pr)|([Mm]l)|([Ii]nv)|([Ii]dr)|([Ss]p)|([Oo]pr)|([Mm]ag)|([Mm]r))\. ==> $1.
((agr)|(dipl)|(univ)|(zg)|(co)|(doc)|(al)|(pr)|(st)|(tč)|(tj)|(inž))\. --> $1.
# Sentence splitting
==>
==>
(([.?!…])|(\.\.\.+))(\p{Lu}) ==> $1$4
(([.?!…])|(\.\.\.+))(["»“‘'])(\p{Lu}) ==> $1$4$5
(([.?!…])|(\.\.\.+))(["»“‘'])(\p{Lu}) ==> $1$4$5
(([.?!…])|(\.\.\.+))(["«”’'])(\p{Lu}) ==> $1$4$5
(([.?!…])|(\.\.\.+))([«”’])(\p{Lu}) ==> $1$4$5
(([.?!…])|(\.\.\.+))(["«”’'])\)(\p{Lu}) ==> $1$4)$5
(([.?!…])|(\.\.\.+))(["«”’'])\)(\p{Lu}) ==> $1$4)$5
(([.?!…])|(\.\.\.+))\( ==> $1(
==>
# Brioni rule #8: dodaj segmentacijo med dva navedka po obstojecih pravilih
(["«”’'])(["»“‘']) ==> $1$2
# Brioni rule #10: sprobajmo koncno locilo + zaklepaj + velika zacetnica (razclenitev stavka)
(([.?!…])|(\.\.\.+))\)(\p{Lu}) ==> $1)$4
(([.?!…])|(\.\.\.+))\)(\p{Lu}) ==> $1)$4
# Brioni rule #13: številke/crke postanejo naštevanje samo na zacetku stavka
# Brioni rule #11: iz združevanja števka + pika izloci nic (samo nic!)
# Brioni rule #5: dodaj rimske številke s piko (tako kot arabske)
((([1-9][0-9]*)|([ivxIVX]+))|(\p{L}))\. ==> $1.
# Brioni rule #4: števke + pika + mala zacetnica: vedno združuj in piko daj v token
# Brioni rule #11: iz združevanja števka + pika izloci nic (samo nic!)
# Brioni rule #5: dodaj rimske številke s piko (tako kot arabske)
(([1-9][0-9]*)|([ivxIVX]+))\.(\p{Ll}) ==> $1.$4
# Dates
([1-9]\d*)\.([1-9]\d*)\. ==> $1.$2.
# Brioni rule #7: mogoce sprobati števke kot velike zacetnice
(([.?!…])|(\.\.\.+))([0-9]) ==> $1$4
# Fix letter + dot errors
(\p{Ll})\.(\p{Lu}) ==> $1.$2