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.
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í KonText 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í nebo na něj aplikovat výše zmíněné kvantifikátory, vztahující se jinak jen na jeden (předcházející) znak,
- 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} |
Klávesové zkratky
Na české klávesnici v systému MS Windows můžete speciální znaky vyvolat pomocí klávesových zkratek (přehled nejpoužívanějších uvádíme v tabulce níže). V ostatních systémech jsou tyto znaky dostupné většinou pomocí AltGr (Linux), případně Alt (Mac OS X) a klávesy, pod níž je daný znak standardně umístěn na klávesnici anglické.
| | 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 | Ctrl + Alt + Q |