Pojmy regulárních výrazů.

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 prosím tuto stránku: http://java.sun.com/j2se/1.5/docs/api/java/util/regex/Pattern.html. Vizte dodatečné odkazy a příklady níže. 

Označení

Znaky

Uvozující znaky

Třídy sad a kategorií kódování Unicode

Třídy znaků

Předdefinované třídy znaků

Označení hranic

Hladové kvantifikátory

Líné kvantifikátory

Logické operátory

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

    

 


Pojem ...

... znamená:


Označení

(?i)

Umožňuje hledání bez ohledu na velikost písmen (ve výchozím nastavení se rozlišují velká a malá písmena).


Znaky

x

Znak x, s výjimkou následujících...

\uhhhh

Znak s hexadecimální 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 0xhhhh


Uvozující znaky

\

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


Třídy sad a kategorií kódování Unicode

\p{InGreek}

Znak v řecké sadě (jednoduchá sada)

\p{Lu}

Velké písmeno (jednoduchá kategorie)

\p{Sc}

Symbol měny

\P{InGreek}

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í)


Třídy znaků

[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)


Předdefinované třídy znaků

.

Jakýkoliv znak (kromě znaků ukončujících řádek)

\d

Číslice: [0-9]

\D

Ne-číslice: [^0-9]

\s

Tzv. bílý 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]


Označení hranic

^

Začátek řádku

$

Konec řádku

\b

Hranice slova

\B

Hranice ne-slova


Hladové kvantifikátory

Tyto budou zahrnovat tolik, kolik jen mohou. Například: a+ bude odpovídat aaa v aaabbb

X?

X, jednou nebo vůbec

X*

X, nula nebo vícekrát

X+

X, jednou nebo vícekrát


Líné kvantifikátory

Tyto budou zahrnovat tak málo, jak jen mohou. Například: a+? bude odpovídat prvnímu a v aaabbb

X??

X, jednou nebo vůbec

X*?

X, nula nebo vícekrát

X+?

X, jednou nebo vícekrát


Logické operátory

XY

X následované Y

X|Y

Buď X, a nebo 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 postupují dle stejného vzoru (vizte níže příklad ve formě pluginu pro Firefox): regulární výraz (záznam nahoře) zkoumá hledaný text (textové pole uprostřed), ukazuje výsledky v poli pro výsledky.

‚Tester regulárních výrazů‘ jako plugin pro FireFox

Můžete také vyzkoušet 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 regex 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:

Regulární výraz Nalezne následující:
(\b\w+\b)\s\1\b
zdvojený výskyt slova 
[\.,]\s*[\.,]+ pomíchané čárky a tečky
\. \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] chybějící mezera mezi tečkou a začátkem nové věty



Právní poznámky Obsah Tematický rejstřík