Regex cheatsheet
Regulárne výrazy sú dostatočne kompaktné, takže syntax sa dá ľahšie vyhľadať ako zapamätať. Táto stránka je celá na jednej obrazovke – triedy, kvantifikátory, kotvy, skupiny, rozhľad, escapovanie a príznaky – s funkčným príkladom pre každý riadok.
Príchuť je JavaScript, čo je to, čo beží vo vašom prehliadači a čo používa tester regulárnych výrazov na tejto stránke. Väčšina z nich je identická v Pythone, Java, Go a PCRE; tam, kde sa príchute rozchádzajú, rozchádzajú sa na hranách — podpora lookbehind, syntax pomenovanej skupiny a či \d znamená „číslica ASCII“ alebo „akákoľvek číslica Unicode“.
Väčšinu prekvapení tvoria dve veci. Kvantifikátory sú nenásytné: vezmú si všetko, čo môžu, a vrátia späť, až keď zvyšok vzoru zlyhá, čo je dôvod, prečo <.+> prehltne dva tagy a <.+?> nie. A alternácia je najvoľnejšia zo všetkých, takže ^a|b$ znamená „začína na a alebo končí na b“ – nie to, čo väčšina ľudí zamýšľa, keď to píšu.
Triedy postáv
Skratky sú len ASCII, pokiaľ nepridáte príznak u a nepoužijete escape vlastnosti Unicode.
| Syntax | Význam | Príklad |
|---|---|---|
| . | Akýkoľvek znak okrem zalomenia riadkuPridajte príznak s, aby sa zhodoval aj s novými riadkami. | /a.c/"abc" → "abc" |
| \d | Číslica, 0–9 | /\d+/"order 42" → "42" |
| \D | Čokoľvek, čo nie je číslica | /\D+/"42abc" → "abc" |
| \w | Písmeno, číslica alebo podčiarkovníkIba ASCII — „é“ nie je \w. | /\w+/"user_1!" → "user_1" |
| \W | Čokoľvek \w sa nezhoduje | /\W+/"a++b" → "++" |
| \s | Akékoľvek medzery vrátane tabulátorov a nových riadkov | /\s+/"a \t b" → " \t " |
| \S | Akýkoľvek znak bez medzery | /\S+/" hi" → "hi" |
| [abc] | Ktorýkoľvek z uvedených znakov | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Akýkoľvek znak okrem uvedených | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Rozsah postáv | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Akékoľvek písmeno Unicode (vyžaduje príznak u) | /\p{L}+/"42 café" → "café" |
Kvantifikátory
Všetky tieto sú štandardne nenásytné: berú si toľko, koľko môžu, a vracajú späť len vtedy, ak zvyšok vzoru zlyhá.
| Syntax | Význam | Príklad |
|---|---|---|
| * | Nula alebo viac | /ab*/"a" → "a" |
| + | Jeden alebo viac | /ab+/"abbb" → "abbb" |
| ? | Nula alebo jedna – robí to voliteľné | /colou?r/"color" → "color" |
| {3} | Presne tri | /\d{3}/"id 12345" → "123" |
| {2,} | Dva alebo viac | /a{2,}/"aaa" → "aaa" |
| {2,4} | Medzi dvoma a štyrmi | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Lenivý — berie čo najmenejNenásytný <.+> by zhltol obe značky. | /<.+?>/"<a><b>" → "<a>" |
Kotvy a hranice
Tieto zodpovedajú pozícii, nie charakteru, takže nič nespotrebúvajú.
| Syntax | Význam | Príklad |
|---|---|---|
| ^ | Začiatok reťazca alebo riadku s príznakom m | /^a/"abc" → "a" |
| $ | Koniec reťazca alebo riadku s príznakom m | /c$/"abc" → "c" |
| \b | Hranica slovaTo je to, čo zastaví zhodu „mačky“ vo vnútri „zreťazenia“. | /\bcat\b/"the cat sat" → "cat" |
| \B | Bez slovnej hranice | /\Bcat/"concatenate" → "cat" |
Skupiny a striedanie
| Syntax | Význam | Príklad |
|---|---|---|
| (abc) | Zachytávacia skupina – zapamätaná na nahradenie | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Zoskupovanie bez snímaniaPoužite to, keď potrebujete iba zoskupenie; udržiava zmysluplné čísla. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Pomenovaná zachytávacia skupina | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Obe strany — striedanieStriedanie má najnižšiu prioritu: ^a|b$ je "^a" alebo "b$", nie "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Spätný odkaz na prvú skupinu | /(\w)\1/"letter" → "tt" |
Rozhliadnite sa
Tvrdenia o tom, čo obklopuje pozíciu. Samy o sebe sa k ničomu nehodia, a preto je ich kombinácia bezpečná.
| Syntax | Význam | Príklad |
|---|---|---|
| (?=…) | Lookahead — nasleduje toto | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negatívny výhľad – toto nenasleduje | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — tomu predchádzalo | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negatívny pohľad za sebou — tomu nepredchádza | /(?<!\$)\b\d+/"about 40" → "40" |
Útek
Týchto dvanásť znakov je tých, ktoré potrebujú spätné lomítko, aby sme ich brali doslovne.
| Syntax | Význam | Príklad |
|---|---|---|
| \. | Doslova bodka | /\d\.\d/"v2.5" → "2.5" |
| \\ | Doslovné spätné lomítko | /\\/"C:\\dir" → "\\" |
| \n | Riadkový posuv | /a\nb/"a\nb" → "a\nb" |
| \t | Karta | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Znak podľa bodu kódu | /\u00e9/"café" → "é" |
Vlajky
| Vlajka | Meno | Význam |
|---|---|---|
| g | globálne | Nájdite každý zápas, nielen prvý. |
| i | Ignorovať malé a veľké písmená | Zhoda bez ohľadu na veľké alebo malé písmená. |
| m | Viacriadkový | Zhoduje sa ^ a $ pri každom zalomení riadku, nie iba na koncoch reťazca. |
| s | Bodka všetko | Poďme . zápasové prestávky tiež. |
| u | Unicode | Zaobchádza so vzorom ako s kódovými bodmi a povolí \p{…} vlastnosti escape. |
| y | Lepkavý | Zhoduje sa len s presne lastIndex, nikdy nehľadá dopredu. |