Regulární výrazy

Regulární výraz je šablona, která popisuje množinu řetězců. Regulární výrazy jsou konstruovány používáním různých operátorů, které kombinují jednodušší výrazy a vytvářejí tak výrazy složitější. V .hlx souboru se používají v  bloku v příkazech Descr.

Základním stavebním kamenem je regulární výraz, který odpovídá jednomu znaku. Většina znaků, včetně písmen a číslic jsou regulární výrazy, které odpovídají sami sobě. Připraveny jsou následující metaznaky:

. ... jakýkoli znak kromě \n.
\n ... nová řádka.
\t ... horizontální tabulátor.
\r ... znak návrat vozíku CR (0x0d).
\e ... ESC (0x1B).
\s ... libovolný prázdný znak (CR,LF,tab,space).
\S ... znak různý od \s.
\l ... malá písmena a-z.
\u ... velká písmena A-Z.
\w ... \l\u.
\d ... číslice.
\D ... znak, který není číslicí.
\a ... číslice nebo \w.
\x00; ... znak s danou hexadecimální hodnotou.
\i000; ... znak s danou decimální hodnotou.
\o000; ... znak s danou octa hodnota.
\X ... značí použití v původním významu, kde X je kterýkoli znak s výjimkou výše uvedených.
Dalším typem regulárních výrazů jsou seznamy znaků, které jsou uzavřeny mezi '['']'. Takovému regulárnímu výrazu potom odpovídá kterýkoli znak obsažený v uvedeném výčtu. Pokud je prvním znakem uvedeným v seznamu '^', význam se obrací a jsou přípustné právě ty znaky, které obsaženy v seznamu nejsou. Například:
[abc] ... znak a, znak b nebo znak c.
[a-c] ... totéž co předchozí.
[^c] ... jakýkoli znak kromě c.
[a-c\\Hl-r] ... znaky a až c, zpětné lomítko, H a l až r.
Většina metaznaků uvedených v prvním přehledu ztrácí v seznamu svůj speciální význam (všechny kromě \t\n). Původní význam '[' či '^' lze, stejně jako v ostatních případech, získat pomocí zpětného lomítka. Regulární výrazy mohou být následovány některým z následujících operátorů pro iterace:
? ... předcházející znak se může, ale nemusí vyskytnout.
* ... předcházející znak se vyskytnout nemusí nebo se může vyskytnou jednou a vícekrát.
+ ... předcházející znak se vyskytne jednou nebo vícekrát.
Regulární výrazy lze řetězit. Výsledný regulární výraz odpovídá zřetězení řetězců odpovídajících jednotlivým regulárním výrazům. Dva regulární výrazy mohou být rovněž spojeny infixním operátorem '|', který má význam jejich alternativní kompozice. Operátory iterace mají nižší precedenci, než operátor alternativní kompozice. Ve výrazech lze pro explicitní změnu precedence rovněž použít závorky '('')'.

dvorka 2013-12-31