Regex csalólap
A reguláris kifejezések elég tömörek ahhoz, hogy a szintaxist könnyebben meg lehessen nézni, mint megjegyezni. Ez az oldal az egészet egy képernyőn mutatja – osztályok, kvantorok, horgonyok, csoportok, körültekintés, menekülés és zászlók – minden sorhoz egy működő példával.
Az íz a JavaScript, amely az Ön böngészőjében fut, és az ezen az oldalon található regex-tesztelő. A legtöbb azonos a Pythonban, a Java-ban, a Go-ban és a PCRE-ben; ahol az ízek eltérnek, ott a széleken eltérnek – hátulnézet támogatás, elnevezett csoport szintaxisa, és hogy a \d „ASCII számjegyet” vagy „bármely Unicode számjegyet” jelent-e.
A legtöbb meglepetést két dolog okozza. A kvantorok mohók: mindent elvesznek, amit csak tudnak, és csak akkor adnak vissza, ha a minta többi része meghiúsul, ezért a <.+> lenyel két címkét, a <.+?> pedig nem. A váltakozás pedig a leglazábban köt, így az ^a|b$ azt jelenti, hogy „a-vel kezdődik, vagy b-vel végződik” – ez nem az, amire a legtöbben gondolnak, amikor írják.
Karakter osztályok
A rövidítések csak ASCII-t használnak, hacsak nem adja hozzá az u jelzőt, és Unicode tulajdonság escape-kódokat használ.
| Szintaxis | Jelentése | Példa |
|---|---|---|
| . | Bármely karakter, kivéve a sortöréstAdja hozzá az s zászlót, hogy az újsorokhoz is illeszkedjen. | /a.c/"abc" → "abc" |
| \d | Egy számjegy, 0-9 | /\d+/"order 42" → "42" |
| \D | Bármi, ami nem számjegy | /\D+/"42abc" → "abc" |
| \w | Betű, szám vagy aláhúzásCsak ASCII – az „é” nem \w. | /\w+/"user_1!" → "user_1" |
| \W | Bármi, \w nem egyezik | /\W+/"a++b" → "++" |
| \s | Bármilyen szóköz, beleértve a tabulátorokat és az újsorokat is | /\s+/"a \t b" → " \t " |
| \S | Bármilyen nem szóköz karakter | /\S+/" hi" → "hi" |
| [abc] | A felsorolt karakterek bármelyike | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Bármely karakter, kivéve a felsorolt karaktereket | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Egy sor karakter | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Bármilyen Unicode betű (szükség van az u zászlóra) | /\p{L}+/"42 café" → "café" |
Kvantifikátorok
Ezek mindegyike alapból mohó: annyit vesznek el, amennyit tudnak, és csak akkor adják vissza, ha a minta többi része nem sikerül.
| Szintaxis | Jelentése | Példa |
|---|---|---|
| * | Nulla vagy több | /ab*/"a" → "a" |
| + | Egy vagy több | /ab+/"abbb" → "abbb" |
| ? | Nulla vagy egy – opcionálissá teszi | /colou?r/"color" → "color" |
| {3} | Pontosan három | /\d{3}/"id 12345" → "123" |
| {2,} | Kettő vagy több | /a{2,}/"aaa" → "aaa" |
| {2,4} | Kettő és négy között | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Lusta – a lehető legkevesebbet veszi igénybeA mohó <.+> mindkét címkét lenyelné. | /<.+?>/"<a><b>" → "<a>" |
Horgonyok és határok
Ezek egy pozícióhoz illenek, nem egy karakterhez, tehát nem fogyasztanak semmit.
| Szintaxis | Jelentése | Példa |
|---|---|---|
| ^ | A karakterlánc vagy egy sor eleje az m jelzővel | /^a/"abc" → "a" |
| $ | A karakterlánc vége vagy egy sor vége m jelzővel | /c$/"abc" → "c" |
| \b | Egy szóhatárEz az, ami megakadályozza, hogy a "macska" illeszkedjen az "összefűzésben". | /\bcat\b/"the cat sat" → "cat" |
| \B | Egy szó sem határ | /\Bcat/"concatenate" → "cat" |
Csoportok és váltakozás
| Szintaxis | Jelentése | Példa |
|---|---|---|
| (abc) | Rögzítési csoport – emlékezve cserére | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Csoportosítás rögzítés nélkülHasználja ezt, ha csak a csoportosításra van szüksége; a rögzítési számokat értelmesnek tartja. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Elfogó csoport neve | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Mindkét oldal - váltakozásAz alternatíva a legalacsonyabb prioritású: ^a|b$ a "^a" vagy "b$", nem pedig a "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Visszautalások az első csoportra | /(\w)\1/"letter" → "tt" |
Nézz körül
Állítások arról, hogy mi vesz körül egy pozíciót. Maguk semmihez sem egyeznek, ezért biztonságosan kombinálhatók.
| Szintaxis | Jelentése | Példa |
|---|---|---|
| (?=…) | Előretekintés – ezt követi | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negatív előretekintés – ezt nem követi | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Nézz mögé – ezt előzi meg | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negatív hátranézés – ezt nem előzi meg | /(?<!\$)\b\d+/"about 40" → "40" |
Menekülés
Ez a tizenkét karakter az, aminek szó szerinti értelmezéséhez fordított perjelre van szükség.
| Szintaxis | Jelentése | Példa |
|---|---|---|
| \. | Egy szó szerinti pont | /\d\.\d/"v2.5" → "2.5" |
| \\ | Szó szerinti fordított perjel | /\\/"C:\\dir" → "\\" |
| \n | Soremelés | /a\nb/"a\nb" → "a\nb" |
| \t | Egy lap | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Egy karakter a kódpontja szerint | /\u00e9/"café" → "é" |
Zászlók
| Zászló | Név | Jelentése |
|---|---|---|
| g | Globális | Keressen minden egyezést, ne csak az elsőt. |
| i | Kis- és nagybetűk figyelmen kívül hagyása | Egyezzen a kis- vagy nagybetűtől függetlenül. |
| m | Többsoros | A ^-t és a $-t minden sortörésnél egyezik, nem csak a karakterlánc végén. |
| s | Pont minden | Hadd . meccssor szakad is. |
| u | Unicode | A mintát kódpontként kezeli, és engedélyezi a \p{…} tulajdonság escape-kódot. |
| y | Ragadós | Csak pontosan a lastIndexnél egyezik, soha nem keres előre. |