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.
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 17.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 17.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 17.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 17.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 17.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 17.7. Regulární výrazy - Označení hranic
| Pojem ... | ... znamená: |
|---|---|
| ^ | Začátek řádku |
| $ | Konec řádku |
| \b | Hranice slova |
| \B | Hranice ne-slova |
Table 17.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 |
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 17.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 |
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 17.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 |
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.
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 17.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. |