Regulární výrazy (nebo také regexy) jsou speciální řetězce znaků, které slouží k popisu a vyhledávání textových řetězců podle určitých vzorců. Tyto vzorce umožňují definovat složitá pravidla pro vyhledávání, nahrazování, rozdělování a zpracování textových řetězců.

Regulární výrazy se používají v různých programovacích jazycích, textových editorech, databázových systémech a dalších aplikacích pro práci s textovými daty. Mezi nejznámější programovací jazyky, které podporují regulární výrazy, patří například Java, Python, Perl, JavaScript, Ruby a další.

Regulární výrazy obsahují speciální znaky a metaznaky, které slouží k definici různých vzorců a pravidel. Například znak „.“ reprezentuje jakýkoli znak, znak „^“ označuje začátek řádku, znak „$“ označuje konec řádku, znak „+“ znamená jeden nebo více opakování předchozího znaku nebo výrazu atd.

S použitím regulárních výrazů lze vyhledávat řetězce podle určitých podmínek, například hledat všechny řetězce, které obsahují určitý výraz, nebo hledat řetězce, které začínají nebo končí určitým slovem. Regulární výrazy jsou také užitečné pro extrakci a transformaci dat, jako je například konverze dat do jiného formátu.

ZnakPopisPříklady
.odpovídá libovolnému znakul.s odpovídá leslosl5s aj.
\vrací metaznaku původní význama\+b odpovídá a+b
?minimálně 0x, maximálně 1xku?s odpovídá právě ks a kus
*minimálně 0x, maximálně neomezeně kráthalo* odpovídá halhalohaloooo apod.
+minimálně 1x, maximálně neomezeně kráthalo+ odpovídá halo
haloooo apod.
{n}právě n-krát10{6} odpovídá právě 1000000
{m,n}minimálně m-krát, maximálně n-krát10{2,4} odpovídá právě 1001000 a 10000
{n,}minimálně n-krát10{2,} odpovídá 10010001000010000 apod.
[ ]odpovídá jednomu ze znaků v závorkách[abc] odpovídá právě a, b, c
[^ ]odpovídá jednomu znaku, neuvedenému v závorkách[^abc] odpovídá libovolný znak krom a, b, c
[ – ]odpovídá jednomu znaku z rozsahu znaků[a-z] odpovídají (malá) písmena abecedy
\sodpovídá bílému znaku (\n, \r, \t, mezera aj.)a\sb odpovídá a b, ale ne ab
\Sodpovídá jinému než bílému znakua\Sb odpovídá a+b, ale ne a b
\dodpovídá desítkové číslicia\db odpovídá a2b, ale ne axb
\Dodpovídá libovolnému znaku kromě číslic 0-9a\Db odpovídá axb, ale ne a2b
\wodpovídá alfanumerickému znaku a podtržitku\w odpovídá 1, a, A, _ ap., ale ne $, + ap.
\Wodpovídá nealfanumerickému znaku nebo podtržítku\W odpovídá $, !, ?, % ap., ale ne 2, b ap.
^na začátku řetězce či řádku^Petr najde Petr jen na začátku řetězce/řádku
$na konci řetězce či řádkuPavel$ najde Pavel jen na konci řetězce/řádku
\bna začátku či konce tzv. slova\bkos\b nenajde kos ve slově kost či kokos
\Bkdekoliv kromě začátku a konce slova\Bkos najde kos ve slově kokos, ale ne v kost
|odděluje několik dílčích výrazůahoj|nazdar odpovídá právě jednomu z pozdravů

a(b|c) odpovídá právě ab a ac
( )subřetězec na nějž je možno aplikovat kvantifikátorko(ko)?s odpovídá právě kos a kokos

(\d)\1 resp. (\d)$1 odpovídá 11, 22, 33 apod.
(?: )uzávorkování netvořící zpětnou referenci(?:\d)(\d)\1 bude odpovídat 122133455 apod. 
(?# )komentář – text v závorkách za znakem # je ignorována(?#test)b odpovídá právě ab
(?= )kladné tvrzení o následujícímkos(?=t) odpovídá kos v kost, ale ne v kosa
(?! )záporné tvrzení o následujícímkos(?!t) odpovídá kos v kosakosu ale ne v kost
(?<= )kladné tvrzení o předcházejícím\d{3}(?<=0) sekvence 3 číslic; poslední musí být 0
(?<! )záporné tvrzení o předcházejím\d{3}(?<!0) sekvence 3 číslic; poslední nesmí být 0
+