Regex varalica
Regularni izrazi dovoljno su kompaktni da je sintaksu lakše pronaći nego zapamtiti. Ova stranica je sve na jednom zaslonu — klase, kvantifikatori, sidra, grupe, razgledavanje, bježanje i zastavice — s radnim primjerom za svaki red.
Okus je JavaScript, što je ono što se izvodi u vašem pregledniku i što koristi tester regularnih izraza na ovoj stranici. Većina je identična u Pythonu, Javi, Gou i PCRE-u; gdje se okusi razlikuju, razlikuju se na rubovima — podrška za gledanje unazad, sintaksa imenovane grupe i znači li \d "ASCII znamenka" ili "bilo koja Unicode znamenka".
Dvije su stvari odgovorne za većinu iznenađenja. Kvantifikatori su pohlepni: uzimaju sve što mogu i vraćaju samo kada ostatak uzorka zakaže, zbog čega <.+> guta dvije oznake, a <.+?> ne. A alternacija povezuje najlabavije od svega, tako da ^a|b$ znači "počinje s a ili završava s b" — a ne ono što većina ljudi namjerava kada piše.
Klase znakova
Skraćenice su samo za ASCII osim ako ne dodate zastavu u i ne koristite izlaze svojstava Unicode.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| . | Bilo koji znak osim prijeloma retkaDodajte zastavicu s da bi odgovarala i novim redovima. | /a.c/"abc" → "abc" |
| \d | Znamenka, 0–9 | /\d+/"order 42" → "42" |
| \D | Sve što nije znamenka | /\D+/"42abc" → "abc" |
| \w | Slovo, znamenka ili podvlakaSamo ASCII — "é" nije \w. | /\w+/"user_1!" → "user_1" |
| \W | Ništa \w ne odgovara | /\W+/"a++b" → "++" |
| \s | Svaki razmak, uključujući kartice 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 lik osim navedenih | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Raspon znakova | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Bilo koje Unicode slovo (potrebna je zastavica u) | /\p{L}+/"42 café" → "café" |
Kvantifikatori
Svi su ovi standardno pohlepni: uzimaju koliko god mogu i vraćaju samo ako ostatak obrasca 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 izbornim | /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" |
| *? | Lijen — uzima što je moguće manjePohlepni <.+> bi progutao obje oznake. | /<.+?>/"<a><b>" → "<a>" |
Sidra i granice
Oni odgovaraju položaju, a ne karakteru, tako da ne konzumiraju ništa.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| ^ | Početak niza ili retka s oznakom m | /^a/"abc" → "a" |
| $ | Kraj niza ili retka s oznakom m | /c$/"abc" → "c" |
| \b | Granica riječiTo je ono što zaustavlja "cat" podudaranje unutar "concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Nema granice riječi | /\Bcat/"concatenate" → "cat" |
Grupe i alternacija
| Sintaksa | Značenje | Primjer |
|---|---|---|
| (abc) | Grupa za hvatanje — zapamćena za zamjenu | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Grupiranje bez hvatanjaKoristite ovo kada trebate samo grupiranje; održava značajne brojeve snimanja. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Imenovana grupa za hvatanje | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Obje strane — izmjenaAlternacija 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" |
Pogled okolo
Tvrdnje o tome što okružuje poziciju. Sami se ne slažu s ničim, što ih čini sigurnima za kombiniranje.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| (?=…) | Lookahead — nakon čega slijedi ovo | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativno gledanje unaprijed — ne slijedi ovo | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — prethodi ovome | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativno gledanje unazad — ovome ne prethodi | /(?<!\$)\b\d+/"about 40" → "40" |
bježanje
Ovih dvanaest znakova su oni koji trebaju obrnutu kosu crtu da bi se shvatili doslovno.
| Sintaksa | Značenje | Primjer |
|---|---|---|
| \. | Doslovna točka | /\d\.\d/"v2.5" → "2.5" |
| \\ | Doslovna kosa crta unazad | /\\/"C:\\dir" → "\\" |
| \n | Pokretanje retka | /a\nb/"a\nb" → "a\nb" |
| \t | Kartica | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Znak prema svojoj kodnoj točki | /\u00e9/"café" → "é" |
Zastave
| Zastava | Ime | Značenje |
|---|---|---|
| g | Globalno | Pronađite svako podudaranje, ne samo prvo. |
| i | Zanemari velika i mala slova | Podudaranje bez obzira na velika ili mala slova. |
| m | Višelinijski | Čini ^ i $ podudaranjem pri svakom prijelomu retka umjesto samo na krajevima niza. |
| s | Točka sve | Neka . prekidi reda također. |
| u | Unicode | Tretira uzorak kao točke koda i omogućuje izlaz svojstva \p{…}. |
| y | ljepljiv | Podudara se samo s točno zadnjim indeksom, nikad ne pretražuje unaprijed. |