Regex cheatsheet
Regulární výrazy jsou dostatečně kompaktní, takže syntaxi je snazší vyhledat než si zapamatovat. Tato stránka je celá na jedné obrazovce – třídy, kvantifikátory, kotvy, skupiny, rozhled, escapování a příznaky – s funkčním příkladem pro každý řádek.
Příchuť je JavaScript, což je to, co běží ve vašem prohlížeči a co používá tester regulárních výrazů na tomto webu. Většina z toho je identická v Pythonu, Javě, Go a PCRE; tam, kde se příchutě liší, rozcházejí se na okrajích — podpora lookbehind, syntaxe pojmenované skupiny a zda \d znamená "číslici ASCII" nebo "libovolnou číslici Unicode".
Za většinu překvapení stojí dvě věci. Kvantifikátory jsou chamtivé: vezmou vše, co mohou, a vrátí je zpět, až když zbytek vzoru selže, což je důvod, proč <.+> spolkne dva tagy a <.+?> ne. A alternace je nejvolnější ze všech, takže ^a|b$ znamená „začíná na a nebo končí na b“ – což většina lidí zamýšlí, když to píší.
Třídy postav
Zkratky jsou pouze ASCII, pokud nepřidáte příznak u a nepoužijete escape vlastnosti Unicode.
| Syntax | Význam | Příklad |
|---|---|---|
| . | Libovolný znak kromě zalomení řádkuPřidejte příznak s, aby odpovídal i novým řádkům. | /a.c/"abc" → "abc" |
| \d | Číslice, 0–9 | /\d+/"order 42" → "42" |
| \D | Cokoli, co není číslice | /\D+/"42abc" → "abc" |
| \w | Písmeno, číslice nebo podtržítkoPouze ASCII — „é“ není \w. | /\w+/"user_1!" → "user_1" |
| \W | Cokoli \w neodpovídá | /\W+/"a++b" → "++" |
| \s | Jakákoli mezera, včetně tabulátorů a nových řádků | /\s+/"a \t b" → " \t " |
| \S | Jakýkoli znak bez mezer | /\S+/" hi" → "hi" |
| [abc] | Kterýkoli z uvedených znaků | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Jakákoli postava kromě uvedených | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Řada postav | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Jakékoli písmeno Unicode (vyžaduje příznak u) | /\p{L}+/"42 café" → "café" |
Kvantifikátory
Všechny tyto jsou ve výchozím nastavení chamtivé: berou, kolik mohou, a vracejí zpět pouze v případě, že zbytek vzoru selže.
| Syntax | Význam | Příklad |
|---|---|---|
| * | Nula nebo více | /ab*/"a" → "a" |
| + | Jeden nebo více | /ab+/"abbb" → "abbb" |
| ? | Nula nebo jedna – dělá to volitelné | /colou?r/"color" → "color" |
| {3} | Přesně tři | /\d{3}/"id 12345" → "123" |
| {2,} | Dvě nebo více | /a{2,}/"aaa" → "aaa" |
| {2,4} | Mezi dvěma a čtyřmi | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Líný — bere co nejméněChamtivý <.+> by spolkl oba tagy. | /<.+?>/"<a><b>" → "<a>" |
Kotvy a hranice
Ty odpovídají pozici, nikoli postavě, takže nic nespotřebovávají.
| Syntax | Význam | Příklad |
|---|---|---|
| ^ | Začátek řetězce nebo řádku s příznakem m | /^a/"abc" → "a" |
| $ | Konec řetězce nebo řádku s příznakem m | /c$/"abc" → "c" |
| \b | Hranice slovaTo je to, co zastaví "kočka" shodu uvnitř "concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Žádná hranice slova | /\Bcat/"concatenate" → "cat" |
Skupiny a střídání
| Syntax | Význam | Příklad |
|---|---|---|
| (abc) | Zachycující skupina – zapamatovaná pro nahrazení | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Seskupování bez zachyceníPoužijte toto, když potřebujete pouze seskupení; zachovává význam zachycených čísel. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Pojmenovaná snímací skupina | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Obě strany — střídáníAlternace má nejnižší prioritu: ^a|b$ je "^a" nebo "b$", nikoli "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Zpětný odkaz na první skupinu | /(\w)\1/"letter" → "tt" |
Rozhlédněte se
Tvrzení o tom, co obklopuje pozici. Samy se k ničemu nehodí, a proto je lze bezpečně kombinovat.
| Syntax | Význam | Příklad |
|---|---|---|
| (?=…) | Lookahead — následuje toto | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativní výhled – toto není následováno | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — tomu předchází | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativní lookbehind – tomu nepředchází | /(?<!\$)\b\d+/"about 40" → "40" |
Útěk
Těchto dvanáct znaků je těch, které potřebují zpětné lomítko, aby je bylo možné brát doslova.
| Syntax | Význam | Příklad |
|---|---|---|
| \. | Doslovná tečka | /\d\.\d/"v2.5" → "2.5" |
| \\ | Doslovné zpětné lomítko | /\\/"C:\\dir" → "\\" |
| \n | Posuv řádku | /a\nb/"a\nb" → "a\nb" |
| \t | Karta | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Znak podle svého kódu | /\u00e9/"café" → "é" |
Vlajky
| Vlajka | Jméno | Význam |
|---|---|---|
| g | Globální | Najděte každý zápas, nejen ten první. |
| i | Ignorovat malá a velká písmena | Shoda bez ohledu na velká nebo malá písmena. |
| m | Víceřádkový | Přizpůsobí se ^ a $ při každém zalomení řádku, nikoli pouze na koncích řetězce. |
| s | Dot all | Pojďme . zápasová čára se také přeruší. |
| u | Unicode | Zachází se vzorem jako s kódovými body a povoluje úniky vlastností \p{…}. |
| y | Lepkavý | Shoduje se pouze na přesně lastIndex, nikdy nehledá dopředu. |