Regulární výrazy
----------------
Regulární výrazy jsou speciální matematická vymyšlenost pro
vyhledávání v textech. Ze začátku vám asi budou připadat děsné, ale
věřte, že když se je naučíte používat, tak se jedná naprosto
ďábelský nástroj. Pravidla jsou následující:
1) Každý znak je jednoznakový rexexp, který odpovídá sám sobě.
Vyjímku tvoří znaky . * [ \, ^ na zač. řádku, na konci řádku a
oddélovací znak (obvykle znak /).
2) Znak \ následovaný některým speciálním znakem je jednoznakový
regexp vyhovující právě tomuto znaku.
3) Znak . vyhovuje každému znaku.
4) Výčet znaků uzvřený do [ ] vyhovuje každému znaku ve výčtu. Je-li
na prvním místě znak ^, vyhovuje všem znakům, které ve výčtu
nejsou. Znak ^ se do výčtu zaradí tak, že se napíše ne jako první
(pokud se ptáte, co když je tam sama, tak zkuste trochu zapojit
svoji šedou kůru mozkovou). Výčet lze rovněž zkrátit intervalem
x-y. Znak - se pak do výčtu zařadí tak, že se napíše jako první
nebo poslední. Znak ] se zařadí tak, že se napíše jako první,
případně za úvodní ^ (je-li přítomna).
5) Jednoznakový regexp vyhovuje tomu, čemu vyhovuje podle
předcházejícího
6) Jednoznakový regexp následovaný * vyhovuje řetězci tvořenému
libovolným (i nulovým) počtem výskytů řetězce vyhovujícímu
jednoznakovému regexpu.
7) Jednoznakový regexp následovaný \{m\} vyhovuje právě m výskytům
regexp.
8) Jednoznakový regexp následovaný \{m,\} vyhovuje alespoň m
výskytům regexp.
9) Jednoznakový regexp následovaný \{m,n\} vyhovuje m až n výskytům
regexp.
10)Zřetězení více regexp je regexp vyhovující zřetězení výrazů
vyhovujících popořadě jednotlivým regexp.
11)Symbol \< na začátku výrazu zajistí, že regexp bude vyhovovat
začátu slova.
12)Symbol \> na konci regexp zajistí, že regexp bude vyhovovat konci
slova.
13)Symbol ^ za začátku regexp zajistí, že regexp bude vyhovovat
pouze začátku řádku.
14)Symbol na konci regexp zajistí, že regexp bude vyhovovat pouze
konci řádku.
Ještě několik příkladů:
ahoj vyhovuje právě výskytům řetězce ahoj
a[ho]j vyhovuje výskytům řetězců ahj a aoj
ah*oj vyhovuje výskytům řetězců aoj, ahoj, ahhoj, ahhhoj, ...
\<ahoj\> vyhovuje výskytům řetězců ahoj jako celých slov
^ahoj vyhovuje výskytům řetězců ahoj, které tvoři celý řádek
Pro podrobnější popis regexp vás odkáži na manuálovou stránku
programů grep a ed (možnosti těchto programů se trochu liší). Jenom
je škoda, že UNIX neumí závorky (pro hvězdičku - x(ab)* vyhovující
x, xab, xabab,... a alternativu ((ab)|(cd) vyhovující ab nebo cd).
výheň