AplikaceAplikace
Nastavení

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 nk 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

  • | - AltGr + Shift + pod „Backspace“ nebo Alt + W
  • {} - AltGr + 9, AltGr + 0 nebo Alt + B, Alt + N
  • [] - Alt + F, Alt + G
  • ^ – Alt + š (či 3)

Související odkazy