Regulární výrazy (Regex)

Regex je posloupnost znaků, která tvoří vyhledávací vzor. Umožňuje definovat velmi komplexní pravidla – například „najdi všechna slova, která začínají velkým písmenem, obsahují aspoň jedno číslo a končí tečkou“.

1. Základní stavební kameny (Metaznaky)

Metaznaky jsou speciální symboly, které nemají doslovný význam, ale určují logiku hledání.

Znak	Význam	Příklad
.	Jakýkoliv jeden znak (kromě nového řádku).	a.c najde „abc“, „a1c“, „a!c“
^	Začátek řádku.	^Ahoj najde „Ahoj“ pouze na začátku
$	Konec řádku.	konec$ najde „konec“ pouze na konci
[ ]	Množina znaků (výčet).	[aeiou] najde jakoukoli samohlásku
[^ ]	Negativní množina (vše kromě).	[^0-9] najde cokoli, co není číslice
\	Escapování (zrušení speciálního významu).	\. najde skutečnou tečku

2. Kvantifikátory (Určení počtu)

Kvantifikátory určují, kolikrát se má předchozí znak nebo skupina opakovat.

`*`: Nula nebo vícekrát (např. lo*l najde „ll“, „lol“, „loool“).

`+`: Jednou nebo vícekrát (např. lo+l najde „lol“, „loool“, ale NE „ll“).

`?`: Nula nebo jednou (nepovinný znak).

`{n}`: Přesně n-krát.

`{n,m}`: n až m-krát.

3. Třídy znaků a zkratky

Místo vypisování [0-9] existují předdefinované zkratky:

\d: Jakákoli číslice (digit).

\w: Jakýkoli „slovní“ znak (písmena, čísla, podtržítko).

\s: Bílý znak (mezera, tabulátor, nový řádek).

\b: Hranice slova (začátek nebo konec slova).

4. Seskupování a logické OR

( ): Seskupování znaků (např. (abc)+ hledá opakování celé sekvence „abcabc“).

|: Logické „nebo“ (např. kočka|pes najde buď jedno, nebo druhé).

5. Praktické příklady ze světa IT

Validace e-mailu (zjednodušená)

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Rozbor: Začni textem (písmena/čísla), následuje zavináč, pak doména a konči tečkou s příponou (min. 2 znaky).

Vyhledání IP adresy

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

Rozbor: Čtyři skupiny jedné až tří číslic oddělené tečkami.

Úprava v příkazu sed

Smazání všech komentářů v konfiguračním souboru:

sed -i '/^#/d' config.conf

(Najdi řádky začínající ^ mřížkou # a smaž je d.)

Zajímavost: Existuje slavný citát Jamieho Zawinského: „Někteří lidé, když se setkají s problémem, si pomyslí: 'Já vím, použiji regulární výrazy.' Teď mají problémy dva.“ To odkazuje na fakt, že špatně napsaný regex může být velmi nepřehledný a těžko se v něm hledají chyby.

Zpět na Linux