Regulární výrazy – kompletní syntaxe

Pokud již víte, co jsou to regulární výrazy, ale nemáte konstrukce a speciální znaky v hlavě, můžete použít tabulku (cheatsheet) s kompletním přehledem syntaxe regulárních výrazů (včetně jednotlivých odnoží).

Tečka, zpětné lomítko
. odpovídá libovolnému znaku k.s odpovídá kus, kos, k2s aj.
\ vrací metaznaku původní význam a\+b odpovídá a+b
Kvantifikátory – Předcházející znak se musí vyskytovat….
? minimálně 0x, maximálně 1x ku?s odpovídá právě ks a kus
* minimálně 0x, maximálně neomezeně krát halo* odpovídá hal, halo, haloooo apod.
+ minimálně 1x, maximálně neomezeně krát halo+ odpovídá halo, haloooo apod.
{n} právě n-krát 10{6} odpovídá právě 1000000
{m,n} minimálně m-krát, maximálně n-krát 10{2,4} odpovídá právě 100, 1000 a 10000
{n,} minimálně n-krát 10{2,} odpovídá 100, 1000, 10000, 10000 apod.
Skupiny znaků
[ ] 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
\s odpovídá bílému znaku (\n, \r, \t, mezera aj.) a\sb odpovídá a b, ale ne ab
\S odpovídá jinému než bílému znaku a\Sb odpovídá a+b, ale ne a b
\d odpovídá desítkové číslici a\db odpovídá a2b, ale ne axb
\D odpovídá libovolnému znaku kromě číslic 0-9 a\Db odpovídá axb, ale ne a2b
\w odpovídá alfanumerickému znaku a podtržitku \w odpovídá 1, a, A, _ ap., ale ne $, + ap.
\W odpovídá nealfanumerickému znaku nebo podtržítku \W odpovídá $, !, ?, % ap., ale ne 2, b ap.
Hranice (ukotvení) – Odpovídá pozici…
^ na začátku řetězce či řádku ^Petr najde Petr jen na začátku řetězce/řádku
$ na konci řetězce či řádku Pavel$ najde Pavel jen na konci řetězce/řádku
\b na začátku či konce tzv. slova \bkos\b nenajde kos ve slově kost či kokos
\B kdekoliv kromě začátku a konce slova \Bkos najde kos ve slově kokos, ale ne v kost
Alternativy, seskupování, zpětné odkazy (reference)
| odděluje několik dílčích výrazů ahoj|nazdar odpovídá právě jednomu z pozdravů
odděluje několik dílčích subvýrazů a(b|c) odpovídá právě ab a ac
( ) subřetězec na nějž je možno aplikovat kvantifikátor ko(ko)?s odpovídá právě kos a kokos
subřetězec na nějž se lze odkazovat (\d)\1 resp. (\d)$1 odpovídá 11, 22, 33 apod.
Speciální závorkové konstrukce
(?: ) uzávorkování netvořící zpětnou referenci (?:\d)(\d)\1 bude odpovídat 122, 133, 455 apod.
(?# ) komentář – text v závorkách za znakem # je ignorován a(?#test)b odpovídá právě ab
(?= ) kladné tvrzení o následujícím kos(?=t) odpovídá kos v kost, ale ne v kosa
(?! ) záporné tvrzení o následujícím kos(?!t) odpovídá kos v kosa, kosu 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
Modifikátor Název Funkčnost
i ignore case nerozlišování malých/velkých písmen
s single line . odpovídá i znaku \n (nový řádek)
m multiple lines ^/$ odpovídá i začátku/konci každého řádku
x extended bílé znaky a komentáře (znaky vpravo od #) jsou ignorovány
g global match hledány všechny části řetězce, které odpovídají regulárnímu výrazu

Zpětné reference

Perl PHP PCRE PHP POSIX Javascript .NET
Skupiny znaků
číslice \d \d [[:digit:]] \d \d
písmena [a-zA-Z] [a-zA-Z] [[:alpha:]] [a-zA-Z] [a-zA-Z]
alfanumerické \w \w [[:alnum:]] \w \w
bílé znaky \s \s [[:space:]] \s \s
n-tý subvýraz – reference v RV \n
$n
\n
× \n $n
n-tý subvýraz – reference v náhradě $n \n
$n
\n $n $n
celý řetězec shody $& \0
$0
\0 $& $0
$&
řetězec před shodou $` × × $` $`
řetězec za shodou $' × × $' $'
Specifické konstrukce
Kladné tvrzení o následujícím (?= ) (?= ) × (?= ) (?= )
Záporné tvrzení o následujícím (?! ) (?! ) × (?! ) (?! )
Kladné tvrzení o přecházejícím (?<= ) (?<= ) × × (?<= )
Záporné tvrzení o předcházejícím (?<! ) (?<! ) × × (?<! )
Uzávorkování bez zpětné reference (?: ) (?: ) × × (?: )
Komentář řádkový #komentář #komentář × × #komentář
Komentář uzávorkovaný (?#komentář) (?#komentář) × × (?#komentář)
Pojmenované subvýrazy × (?P<jméno> ) × × (?<jméno> )

× – vlastnost není podporována

Článek je převzat z webu www.regularnivyrazy.info.

Napsat komentář