Cheatsheet Regex
Expresiile regulate sunt suficient de compacte încât sintaxa să fie mai ușor de căutat decât de memorat. Această pagină este întregul ei pe un singur ecran - clase, cuantificatori, ancore, grupuri, privire în jur, evadare și steaguri - cu un exemplu de lucru pentru fiecare rând.
Aroma este JavaScript, care este ceea ce rulează în browser și ceea ce folosește testerul regex de pe acest site. Cea mai mare parte este identică în Python, Java, Go și PCRE; acolo unde aromele diferă, ele diverg pe margini — suport de căutare în urmă, sintaxa grupului numit și dacă \d înseamnă „cifră ASCII” sau „orice cifră Unicode”.
Două lucruri reprezintă majoritatea surprizelor. Cuantificatorii sunt lacomi: iau tot ce pot și returnează numai atunci când restul modelului eșuează, motiv pentru care <.+> înghite două etichete și <.+?> nu. Iar alternanța leagă cel mai liber dintre toate, așa că ^a|b$ înseamnă „începe cu a sau se termină cu b” – nu ceea ce intenționează majoritatea oamenilor când o scriu.
Clasele de caractere
Scurtarea sunt doar ASCII, cu excepția cazului în care adăugați steag-ul u și utilizați escape-uri de proprietate Unicode.
| Sintaxă | Sens | Exemplu |
|---|---|---|
| . | Orice caracter, cu excepția unei întreruperi de linieAdăugați steagul s pentru a se potrivi și cu liniile noi. | /a.c/"abc" → "abc" |
| \d | O cifră, 0–9 | /\d+/"order 42" → "42" |
| \D | Orice care nu este o cifră | /\D+/"42abc" → "abc" |
| \w | Literă, cifră sau liniuță de subliniereNumai ASCII — „é” nu este \w. | /\w+/"user_1!" → "user_1" |
| \W | Orice \w nu se potrivește | /\W+/"a++b" → "++" |
| \s | Orice spațiu alb, inclusiv file și linii noi | /\s+/"a \t b" → " \t " |
| \S | Orice caracter fără spații albe | /\S+/" hi" → "hi" |
| [abc] | Oricare dintre personajele enumerate | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Orice personaj, cu excepția celor enumerate | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | O serie de personaje | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Orice literă Unicode (are nevoie de steagul u) | /\p{L}+/"42 café" → "café" |
Cuantificatori
Toate acestea sunt lacome în mod implicit: iau cât pot și dau înapoi numai dacă restul modelului eșuează.
| Sintaxă | Sens | Exemplu |
|---|---|---|
| * | Zero sau mai mult | /ab*/"a" → "a" |
| + | Una sau mai multe | /ab+/"abbb" → "abbb" |
| ? | Zero sau unu - îl face opțional | /colou?r/"color" → "color" |
| {3} | Exact trei | /\d{3}/"id 12345" → "123" |
| {2,} | Două sau mai multe | /a{2,}/"aaa" → "aaa" |
| {2,4} | Între doi și patru | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Leneș — ia cât mai puțin posibilLacomul <.+> ar înghiți ambele etichete. | /<.+?>/"<a><b>" → "<a>" |
Ancore și limite
Acestea se potrivesc cu o poziție, nu cu un personaj, așa că nu consumă nimic.
| Sintaxă | Sens | Exemplu |
|---|---|---|
| ^ | Începutul șirului sau al unei linii cu steagul m | /^a/"abc" → "a" |
| $ | Sfârșitul șirului sau al unei linii cu steagul m | /c$/"abc" → "c" |
| \b | O limită de cuvinteAcesta este ceea ce oprește potrivirea „pisica” în interiorul „concatenate”. | /\bcat\b/"the cat sat" → "cat" |
| \B | Nici o limită de cuvânt | /\Bcat/"concatenate" → "cat" |
Grupuri și alternanță
| Sintaxă | Sens | Exemplu |
|---|---|---|
| (abc) | Grup de capturare - reținut pentru înlocuire | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Gruparea fără capturăUtilizați acest lucru atunci când aveți nevoie doar de grupare; păstrează semnificative numerele de captură. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Grup de capturare numit | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Oricare parte - alternanțăAlternarea are cea mai mică prioritate: ^a|b$ este „^a” sau „b$”, nu „^(a|b)$”. | /cat|dog/"one dog" → "dog" |
| \1 | Referință la primul grup | /(\w)\1/"letter" → "tt" |
Privește în jur
Afirmații despre ceea ce înconjoară o poziție. Nu se potrivesc cu nimic ei înșiși, ceea ce îi face sigur de combinat.
| Sintaxă | Sens | Exemplu |
|---|---|---|
| (?=…) | Privește înainte - urmat de asta | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Perspectivă negativă - nu este urmată de aceasta | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Privește în urmă — precedat de aceasta | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Privire negativă în urmă — neprecedată de aceasta | /(?<!\$)\b\d+/"about 40" → "40" |
Evadare
Aceste douăsprezece personaje sunt cele care au nevoie de o bară oblică inversă pentru a fi luate la propriu.
| Sintaxă | Sens | Exemplu |
|---|---|---|
| \. | Un punct literal | /\d\.\d/"v2.5" → "2.5" |
| \\ | O bară oblică inversă | /\\/"C:\\dir" → "\\" |
| \n | Un avans de linie | /a\nb/"a\nb" → "a\nb" |
| \t | O filă | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Un caracter prin punctul său de cod | /\u00e9/"café" → "é" |
Steaguri
| Pavilion | Nume | Sens |
|---|---|---|
| g | Global | Găsiți fiecare potrivire, nu doar prima. |
| i | Ignora majusculele | Potriviți indiferent de litere mari sau mici. |
| m | Multilinie | Face ca ^ și $ să se potrivească la fiecare întrerupere de linie în loc de numai la sfârșitul șirului. |
| s | Punct toate | Să . se întrerupe și linia meciului. |
| u | Unicode | Tratează modelul ca puncte de cod și permite scăpările de proprietate \p{…}. |
| y | Lipicios | Se potrivește doar exact la lastIndex, fără a căuta niciodată înainte. |