OmegaT 4.2 - Uživatelská příručka

Appendix D. Regulární výrazy

Regulární výrazy (uváděné i zkráceně jako ‚regex‘ – z anglického ‚REGular EXpressions‘) používané při vyhledávání a v segmentačních pravidlech jsou identické s těmi, které podporuje Java. Pokud potřebujete bližší informace, navštivte stránku Java Regex documentation. Projděte si dodatečné odkazy a příklady níže.

Note

Tato kapitola se obrací především na pokročilé uživatele, kteří potřebují definovat vlastní varianty pravidel segmentace nebo chtějí získat komplexnější a účinnější nástroj při vyhledávání.

Table D.1. Regulární výrazy – Označení
Pojem ... ... znamená:
(?i) Umožňuje hledání bez ohledu na velikost písmen (ve výchozím nastavení se rozlišují velká a malá písmena).

Table D.2. Regulární výrazy – Znak
Pojem ... ... znamená:
x Znak x, s výjimkou následujících...
\uhhhh Znak s hexadecimální/šestnáctkovou hodnotou 0xhhhh
\t Znak tabulátoru (‚\u0009‘)
\n Znak nového řádku (konce řádku) (‚\u000A‘)
\r Znak návratu vozíku (‚\u000D‘)
\f Znak posunu o stránku (‚\u000C‘)
\a Znak zvukové signalizace (‚\u0007‘)
\e Znak změny (‚\u001B‘)
\cx Řídící znak odpovídající x
\0n Znak s oktalovou/osmičkovou hodnotou 0n (0 <= n <= 7)
\0nn Znak s oktalovou/osmičkovou hodnotou 0nn (0 <= n <= 7)
\0mnn Znak s oktalovou/osmičkovou hodnotou 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh Znak s hexadecimální/šestnáctkovou hodnotou 0xhh

Table D.3. Regulární výrazy – Uvozování
Pojem ... ... znamená:
\ Lomítko samo o sobě neznamená nic, jen uvozuje následující znak. Je vyžadováno, pokud byste chtěli zadání metaznaků !$()*+.<>?[\]^{|} tak, aby odpovídaly samy sobě.
\\ Například toto je znak pro hledání zpětného lomítka
\Q Nic neznamená, vymezuje všechny znaky až po \E
\E Nic neznamená, ukončuje vymezení započaté pomocí \Q

Table D.4. Regulární výrazy – Třídy pro bloky a kategorie Unicode
Pojem ... ... znamená:
\p{řecky} Znak v řecké sadě (jednoduchá sada)
\p{Lu} Velké písmeno (jednoduchá kategorie)
\p{Sc} Symbol měny
\p{řecky} Jakýkoliv znak mimo nějakého z řecké sady (negace)
[\p{L}&&[^\p{Lu}]] Jakékoliv písmeno mimo velkých (odečítání)

Table D.5. Regulární výrazy – Třídy znaků
Pojem ... ... znamená:
[abc] a, b, nebo c (jednoduchá třída)
[^abc] Jakýkoliv znak mimo a, b, nebo c (negace)
[a-zA-Z] a až po z nebo A až po Z, včetně (rozsah)

Table D.6. Regulární výrazy – Předdefinované třídy znaků
Pojem ... ... znamená:
. Jakýkoliv znak (kromě znaků ukončujících řádek)
\d Číslice: [0-9]
\D Ne-číslice: [^0-9]
\s Netisknutelný znak (např. mezera): [ \t\n\x0B\f\r]
\S Negace bílého znaku (např. ne-mezera): [^\s]
\w Znak slova: [a-zA-Z_0-9]
\W Znak ne-slova: [^\w]

Table D.7. Regulární výrazy - Označení hranic
Pojem ... ... znamená:
^ Začátek řádku
$ Konec řádku
\b Hranice slova
\B Hranice ne-slova

Table D.8. Regulární výrazy – Hladové kvantifikátory
Pojem ... ... znamená:
X ? X, jednou nebo vůbec
X * X, nula nebo vícekrát
X + X, jednou nebo vícekrát

Note

Hladové kvantifikátory se budou snažit najít tolik shody, jak je to jen možné. Například: a+ bude odpovídat aaa v aaabbb

Table D.9. Regulární výrazy – Líné kvantifikátory
Pojem ... ... znamená:
X?? X, jednou nebo vůbec
X*? X, nula nebo vícekrát
X+? X, jednou nebo vícekrát

Note

Líné kvantifikátory se budou snažit najít co nejmíň shody, jak je to jen možné. Například: a+? bude odpovídat prvnímu a v aaabbb

Table D.10. Regulární výrazy – Logické operátory
Pojem ... ... znamená:
XY X následované Y
X|Y Buď X anebo Y
(XY) XY jako samostatná skupina

Nástroje regex a příklady použití

Existuje množství interaktivních nástrojů dostupných pro vývoj a testování regulárních výrazů. Všechny obecně postupují dle stejného vzoru (vizte níže příklad ve formě pluginu pro Firefox: Regular Expression Tester): regulární výraz (záznam nahoře) zkoumá hledaný text (textové pole uprostřed), ukazuje výsledky v poli pro výsledky.

Figure D.1. Nástroj pro testování regulárních výrazů ‚Regex Tester‘
Nástroj pro testování regulárních výrazů ‚Regex Tester‘

Můžete také vyzkoušet trenažer The Regex Coach jako samostatný nástroj pro Windows, Linux, Mac, FreeBSD. Je podobný předchozímu příkladu.

Malá sbírka užitečných regulárních výrazů se nachází přímo v aplikaci OmegaT (vizte Možnosti > Segmentace). Následující seznam zahrnuje výrazy, které se mohou hodit při prohledávání překladové paměti:

Table D.11. Regulární výrazy Příklady regulárních výrazů v překladech
Regulární výraz najde následující:
(\b\w+\b)\s\1\b zdvojený výskyt slova
[\.,]\s*[\.,]+ čárka nebo tečka následovaná mezerou a další čárkou nebo mezerou
\. \s+$ mezery navíc, za nimiž je tečka na konci řádku
\s+a\s+[aeiou] Pro angličtinu: u slov začínajících na samohlásku se užívá neurčitý člen „an“, ne „a“
\s+an\s+[^aeiou] Pro angličtinu: stejná kontrola jako nahoře, ale pro souhlásky („a“, ne „an“)
\s{2,} víc než jedna mezera
\.[A-Z] Tečka následovaná slovem s prvním velkým písmenem – pravděpodobně chybí mezera mezi tečkou a začátkem nové věty?
\bis\b hledej „is“, ale ne „this“ nebo „isn't“ atd.