Chapter 16. Regulární výrazy
Prev |  | Next

# Chapter 16. 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 právě ty, 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, který 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 16.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 16.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 0n (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 16.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 16.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 16.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 16.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 16.7. Regulární výrazy - Označení hranic

Pojem ... | ... znamená:
--- | ---
^ | Začátek řádku
$ | Konec řádku
\b | Hranice slova
\B | Hranice ne-slova

Table 16.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 16.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 16.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

## 1. 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 16.1. Regex Tester

Můžete také vyzkoušet trenažer The Regex Coach jako samostatný nástroj pro Windows, Linux, Mac, FreeBSD, jedná se o samostatný nástroj. 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 16.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\s+ | 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?

Prev |  | Next
Chapter 15. Vyhledávání | Home | Chapter 17. Slovníky