Curs interactiv
Curs Regex
Învățați expresii obișnuite de la zero, în limba engleză, cu un motor care rulează fiecare model direct în browser și vă arată potrivirile în timp real.
01 · Modulul 1 — Noțiuni de bază
Bazele regex: modele literale, clase de caractere de bază, metacaracterele `.` și meta-caracterele escape.
- 1.1Modele literaleCaractere normale, diferențiere între majuscule și minuscule și o primă rulare: potrivire și indexare.~8 min
- 1.2Clasele de bază: \d \w \sClasele predefinite pentru cifre, caractere de cuvinte și spații albe (și versiunile lor negate).~10 min
- 1.3Wildcard: punctul `.`Caracterul `.` se potrivește cu aproape orice: ce include, ce exclude și de ce este important steagul `s`.~8 min
- 1.4Evadarea meta-caracterelorCele 12 meta-caractere care trebuie să fie evadate cu `\`, când aveți nevoie de o bară oblică inversă dublă și de ce.~10 min
02 · Modulul 2 — Cuantificatori
Cât de mult să repetați: `*`, `+`, `?`, intervale `{n,m}` și diferența dintre lacom și leneș.
- 2.1`*`, `+`, `?`Zero sau mai multe, unul sau mai mulți, opțional: cei trei cuantificatori de bază.~10 min
- 2.2Cantități exacte `{n,m}`Exact `n`, de la `n` la `m`, cel puțin `n`: cuantificatorul numeric.~10 min
- 2.3Lacom vs leneșÎn mod implicit, cuantificatorii sunt lacomi (`.*`); adăugați `?` pentru versiunea leneșă (`.*?`).~10 min
- 2.4Backtracking: o privire de ansambluCe face motorul când un cuantificator lacom eșuează și de ce poate fi costisitor.~12 min
03 · Modulul 3 — Ancore și limite
Poziție, nu caractere: ancorare la începutul/sfârșitul șirului, la limitele cuvintelor și la începutul/sfârșitul fiecărei linii cu steag `m`.
- 3.1Început și sfârșit: `^` și `$`Ancorarea unui model la primul sau ultimul caracter al șirului.~8 min
- 3.2Limitele cuvintelor: `\b` `\B`Tranziția între caractere cu cuvânt și non-cuvânt; găsind cuvinte întregi.~10 min
- 3.3Steagul `m`: multilinieCu steagul `m`, `^` și `$` se ancorează la începutul/sfârșitul fiecărei linii.~10 min
- 3.4Linii goale și tăiateModele utile: potrivirea liniilor goale, tăierea spațiilor albe la începutul/sfârșitul unei linii.~10 min
04 · Modulul 4 — Grupuri și alternanță
Grupați cu `()`, alegeți dintre alternative cu `|`, evitați capturarea cu `(?:...)`, numiți grupurile cu `(?<nume>...)` și trimiteți înapoi la o captură anterioară cu referințe înapoi.
- 4.1Grupuri de captură: `(...)`Paranteze pentru grupare și captare; accesează grupele 1, 2, 3... în meciuri.~10 min
- 4.2Alternare: `|`Țeava alege între două sau mai multe submodele; precedență și paranteze.~10 min
- 4.3Grupuri necapturatoare: `(?:...)`Grupați fără a crea o captură: util atunci când trebuie doar să cuantificați sau să alternați.~10 min
- 4.4Grupuri denumite și referințe din spate`(?<nume>...)` pentru a da un nume; `\1` `\k<nume>` pentru a se referi la captură.~12 min
05 · Modulul 5 — Clase de caractere
Definiți seturi personalizate cu `[...]`, utilizați intervale, anulați cu `[^...]` și atingeți proprietățile Unicode cu `\p{...}` și steag-ul `u`.
- 5.1Seturi de caractere: `[abc]`Parantezele pătrate definesc un set de caractere permis într-o singură poziție.~8 min
- 5.2Intervalele în interiorul claselor: `[a-z0-9]`Intervale prin liniuță; combinând intervale și caractere individuale.~8 min
- 5.3Negație: `[^...]`O clasă negata se potrivește cu orice **cu excepția** caracterelor enumerate.~8 min
- 5.4Proprietatea Unicode scapă`\p{L}`, `\p{N}`, `\p{Script=...}` cu indicatorul `u`: clase semantice Unicode.~12 min
06 · Modulul 6 — Priviți în jur
Afirmații cu lățime zero: priviți înainte sau înapoi în șir fără a consuma caractere. Priviți înainte `(?=)` `(?!)`, priviți în urmă `(?<=)` `(?<!)`.
- 6.1Privire pozitivă: `(?=...)`Verificați dacă un anumit model urmează poziția curentă, fără a-l consuma.~10 min
- 6.2Privire negativă înainte: `(?!...)`Verificați dacă un anumit model NU urmează poziția curentă.~10 min
- 6.3Privește în urmă: `(?<=...)` `(?<!...)`Versiunile „look-backward” ale lookaround; Suport ES2018+.~12 min
- 6.4Priviți în jur în practicăExtrageți o valoare fără a include contextul, validați parolele, analizați numerele delimitate.~12 min
07 · Modulul 7 — Steaguri, înlocuire, împărțire
Toate steaguri (inclusiv `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` cu regex, se referă la `$1`/`$<nume>` în șirul de înlocuire și înlocuiește apelurile inverse.
- 7.1Toate steagurile în detaliu`g i m s u v y d`: ce face fiecare și cum se combină.~12 min
- 7.2Înlocuire de bază și `$1`Înlocuiți potrivirile cu un șir fix sau cu referințe inverse `$1` / `$<nume>`.~10 min
- 7.3Înlocuiți cu un apel inversFuncție de înlocuire: transformați fiecare potrivire cu cod JS arbitrar, acces la grupuri.~12 min
- 7.4Împărțiți cu regexÎmpărțiți un șir pe un model (CSV permisiv, tokenizer minim).~10 min
08 · Modulul 8 — Practică
Pune totul la un loc pe probleme reale: validați e-mailurile, analizați jurnalele, extrageți adrese URL/IP-uri, scrieți modele rezistente la ReDoS.
- 8.1Validarea unui e-mailUn model „destul de bun” pentru e-mailuri, cu compromisurile explicate.~12 min
- 8.2Analizor de jurnal ApacheExtrageți IP-ul, metoda, calea și codul de stare dintr-o linie de jurnal folosind grupuri numite.~12 min
- 8.3Extragerea adreselor URL și IP-urilorRecunoașteți adresele URL http(e) și adresele IPv4 în text liber.~12 min
- 8.4Scrierea modelelor sigure pentru ReDoSRecunoașteți modelele catastrofale (`(a+)+b`), refactorizați-le, utilizați cuantificatori asemănătoare atomice.~14 min