Regex podsjetnik
Regularni su izrazi dovoljno sažeti da je sintaksu lakše potražiti nego zapamtiti. Ova je stranica cjelina na jednom zaslonu — klase, kvantifikatori, sidra, grupe, lookaround, escapiranje i zastavice — s radnim primjerom za svaki redak.
Varijanta je JavaScript, ono što se izvodi u vašem pregledniku i što koristi regex tester na ovoj stranici. Većina je identična u Pythonu, Javi, Gou i PCRE-u; gdje se varijante razilaze, razilaze se na rubovima — podrška za lookbehind, sintaksa imenovanih grupa i znači li \d "ASCII znamenku" ili "bilo koju Unicode znamenku".
Dvije stvari uzrokuju većinu iznenađenja. Kvantifikatori su pohlepni: uzimaju sve što mogu i vraćaju tek kad ostatak uzorka ne uspije, zbog čega <.+> proguta dvije oznake, a <.+?> ne. A alternacija se veže najslabije od svega, pa ^a|b$ znači "počinje s a, ili završava s b" — ne ono što većina ljudi namjerava kad to napiše.
Klase znakova
11Kratice su samo ASCII osim ako dodate zastavicu u i koristite Unicode escape sekvence svojstava.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| . | Bilo koji znak osim prijeloma retkaDodajte zastavicu s da bi se podudarao i s novim retcima. | /a.c/"abc" → "abc" |
| \d | Znamenka, 0–9 | /\d+/"order 42" → "42" |
| \D | Bilo što što nije znamenka | /\D+/"42abc" → "abc" |
| \w | Slovo, znamenka ili donja crtaSamo ASCII — "é" nije \w. | /\w+/"user_1!" → "user_1" |
| \W | Bilo što s čime se \w ne podudara | /\W+/"a++b" → "++" |
| \s | Bilo koji razmak, uključujući tabulatore i nove retke | /\s+/"a \t b" → " \t " |
| \S | Bilo koji znak koji nije razmak | /\S+/" hi" → "hi" |
| [abc] | Bilo koji od navedenih znakova | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Bilo koji znak osim navedenih | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Raspon znakova | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Bilo koje Unicode slovo (potrebna zastavica u) | /\p{L}+/"42 café" → "café" |
Kvantifikatori
7Svi su ovi pohlepni prema zadanim postavkama: uzimaju što je više moguće i vraćaju samo ako ostatak uzorka ne uspije.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| * | Nula ili više | /ab*/"a" → "a" |
| + | Jedan ili više | /ab+/"abbb" → "abbb" |
| ? | Nula ili jedan — čini ga neobaveznim | /colou?r/"color" → "color" |
| {3} | Točno tri | /\d{3}/"id 12345" → "123" |
| {2,} | Dva ili više | /a{2,}/"aaa" → "aaa" |
| {2,4} | Između dva i četiri | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Lijeni — uzima što je manje mogućePohlepni <.+> progutao bi obje oznake. | /<.+?>/"<a><b>" → "<a>" |
Sidra i granice
4Ovi se podudaraju s pozicijom, a ne sa znakom, pa ništa ne troše.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| ^ | Početak niza, ili retka uz zastavicu m | /^a/"abc" → "a" |
| $ | Kraj niza, ili retka uz zastavicu m | /c$/"abc" → "c" |
| \b | Granica riječiTo je ono što sprječava da se "cat" podudari unutar "concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Nije granica riječi | /\Bcat/"concatenate" → "cat" |
Grupe i alternacija
5| Sintaksa | Značenje | Primjer |
|---|---|---|
| (abc) | Grupa za hvatanje — zapamćena za zamjenu | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Grupiranje bez hvatanjaKoristite ovo kad vam treba samo grupiranje; zadržava značenje brojeva hvatanja. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Imenovana grupa za hvatanje | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Bilo koja strana — alternacijaAlternacija ima najniži prioritet: ^a|b$ je "^a" ili "b$", a ne "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Povratna referenca na prvu grupu | /(\w)\1/"letter" → "tt" |
Lookaround
4Tvrdnje o tome što okružuje poziciju. Same se ne podudaraju ni s čim, što ih čini sigurnima za kombiniranje.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| (?=…) | Lookahead — praćeno ovime | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativni lookahead — nije praćeno ovime | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — kojem prethodi ovo | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativni lookbehind — kojem ne prethodi ovo | /(?<!\$)\b\d+/"about 40" → "40" |
Escapiranje
5Ovih dvanaest znakova su oni kojima je potrebna obrnuta kosa crta da bi se shvatili doslovno.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| \. | Doslovna točka | /\d\.\d/"v2.5" → "2.5" |
| \\ | Doslovna obrnuta kosa crta | /\\/"C:\\dir" → "\\" |
| \n | Pomak retka | /a\nb/"a\nb" → "a\nb" |
| \t | Tabulator | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Znak prema svojoj kodnoj točki | /\u00e9/"café" → "é" |
Zastavice
6| Zastavica | Naziv | Značenje |
|---|---|---|
| g | Globalno | Pronađi svako podudaranje, ne samo prvo. |
| i | Zanemari velika/mala slova | Podudaranje bez obzira na velika ili mala slova. |
| m | Višeredno | Čini da se ^ i $ podudaraju na svakom prijelomu retka umjesto samo na krajevima niza. |
| s | Dot all | Dopušta da se . podudara i s prijelomima retka. |
| u | Unicode | Tretira uzorak kao kodne točke i omogućuje \p{…} escape sekvence svojstava. |
| y | Sticky | Podudara se samo točno na lastIndex, nikad ne tražeći unaprijed. |