Toto je starší verze dokumentu!
Regulární výrazy
Regulární výrazy (pojem pochází z teorie formálních jazyků, jeho význam běžně používaný v informatice je však poněkud odlišný) umožňují exaktně popsat množinu textových řetězců odpovídající hledanému výrazu či jevu. Pro tyto účely používají zástupné znaky se speciálním významem (tzv. wildcard - žolíky). Regulární výrazy jsou velmi podstatnou součástí dotazovacího jazyka.
Zjednodušeně řečeno se jedná o vkládání určitých speciálních znaků se zvláštním významem do slov, která chceme vyhledat. S podobnou, byť velmi primitivní, formou vyhledávání se můžeme setkat třeba při hledání souborů ve Windows (pomocí menu Start > Hledat), které nevyžaduje přesnou znalost celého názvu souboru. Pokud si například u souboru seznam.txt nepamatujeme jeho příponu, stačí pro hledání zadat seznam.* - hvězdička v tomto případě zastupuje libovolnou koncovku.
Podobně lze postupovat i při vyhledávání pomocí korpusového manažeru, jeho možnosti jsou však daleko širší. Chceme-li tedy například v korpusu vyhledat všechny tvary slova bobule, nechceme je všechny vypisovat a nechceme ani používat lemmatizaci, je možné zadat dotaz bobul.*
- tečka zde zastupuje libovolný znak a hvězdička libovolný počet opakování předchozího (tj. libovolného) znaku. Musíme však počítat s tím, že manažer vyhledá všechna slova začínající bobul, tedy například i adjektivum bobulovité apod. Sekvence .*
tedy zastupuje libovolnou část slova (nebo i tagu) a je zřejmě vůbec nejčastěji používanou součástí regulárního výrazu. Při zadávání dotazu můžeme regulární výrazy samozřejmě uplatnit i na začátku nebo uprostřed dotazu. Mezi regulární výrazy používané v RozhraníXX patří následující speciální znaky:
- tečka (
.
) - představuje jeden libovolný znak, - interval (
{n, k}
) - představuje n až k opakování předchozího znaku nebo většího celku; je-li k vynecháno ({n,}
), odpovídá intervalu nejméně n opakování, pokud má interval tvar{n}
, odpovídá mu přesně n opakování; - hvězdička (
*
) - představuje libovolný počet (0 a více) opakování předchozího znaku nebo celku, je tedy ekvivalentní s{0,}
- plus (
+
) - představuje 1 nebo více opakování předchozího znaku nebo celku, totéž co{1,}
- otazník (
?
) - představuje žádný nebo jeden výskyt předchozího znaku nebo celku, identické s{0,1}
- seznam (
[]
) - představuje alternativu. Nabízí možnost vybrat jeden libovolný znak z těch, které jsou uvedeny v seznamu uvnitř hranatých závorek; pokud je prvním znakem seznamu stříška (^
), jde o negovaný seznam a představuje tedy libovolný jeden znak kromě těch uvedených uvnitř hranatých závorek; v rámci seznamu je možné používat také pomlčku (-
) jako operátor rozsahu (např.[a-z]
,[1-9]
), - svislá čára (
|
) - představuje také alternativu, ne ovšem mezi jednotlivými znaky, ale celými řetězci tvořícími celek, - kulaté závorky - libovolnou část výrazu je možné seskupit do kulatých závorek, vytvořit tak celek a ovlivnit tím prioritu jeho vyhodnocování,
- zpětné lomítko (
\
) - pokud některému speciálnímu znaku předchází zpětné lomítko, ztrácí tento znak svůj zvláštní význam (což umožňuje např. vyhledávat konkrétní interpunkční znaménka).
Příklady využití regulárních výrazů najdete v následující tabulce:
Příklad | regulární výraz |
---|---|
všechny tvary slova ptakopysk | ptakopys.* |
slovo kdy s malým nebo velkým počátečním písmenem | [kK]dy |
tečka jako interpunkční znaménko | \. |
infinitivy předponových sloves od nést | .+nést |
různě dlouhé varianty citoslovce ratata | ra(ta)+ |
pravopisnou dubletu: diskuze psané i se s | diskuse|diskuze nebo disku[sz]e |
libovolná čísla skládající se ze tří nebo čtyř cifer | [0-9]{3,4} |
libovolná pozice (slovo i interpunkční znaménko) mezi dvěma lemmaty | [lemma="mít"][][lemma="srdce"] |
Šikovné zkratky
na české klávesnici
\ | svislítko | AltGr + Shift + pod „Backspace“ nebo Alt + W | |
---|---|---|---|
{} | složené závorky | AltGr + 9, AltGr + 0 nebo Alt + B, Alt + N | |
[] | hranaté závorky | Alt + F, Alt + G | |
\ | stříška | Alt + š (či 3) | |
\ | zpětné lomítko |