Direct naar de hoofdinhoud
eLearner.app

Interactieve cursus

Regex-cursus

Leer reguliere expressies helemaal opnieuw, in het Engels, met een engine die elk patroon rechtstreeks in de browser uitvoert en je overeenkomsten in realtime laat zien.

01 · Basisbeginselen

4 lessen

De basis van regex: letterlijke patronen, basiskarakterklassen, de `.` wildcard en ontsnappende metakarakters.

  1. 1.1Letterlijke patronenNormale karakters, hoofdlettergevoeligheid en een eerste run: match en index.~8 min
  2. 1.2Basisklassen: \d \w \sDe vooraf gedefinieerde klassen voor cijfers, woordtekens en witruimte (en hun ontkende versies).~10 min
  3. 1.3Het jokerteken: de punt `.`Het teken `.` komt overeen met bijna alles: wat het inhoudt, wat het uitsluit en waarom de vlag `s` ertoe doet.~8 min
  4. 1.4Ontsnappen aan metakaraktersDe 12 metatekens die moeten worden geëscaped met `\`, wanneer je een dubbele backslash nodig hebt en waarom.~10 min

02 · Kwantificatoren

4 lessen

Hoeveel te herhalen: `*`, `+`, `?`, intervallen `{n,m}` en het verschil tussen hebzuchtig en lui.

  1. 2.1`*`, `+`, `?`Nul of meer, één of meer, optioneel: de drie basiskwantificatoren.~10 min
  2. 2.2Exacte hoeveelheden `{n,m}`Precies `n`, van `n` tot `m`, tenminste `n`: de numerieke kwantor.~10 min
  3. 2.3Hebzuchtig versus luiStandaard zijn kwantoren hebzuchtig (`.*`); voeg `?` toe voor de luie versie (`.*?`).~10 min
  4. 2.4Backtracking: een overzichtWat de motor doet als een hebzuchtige kwantificator faalt, en waarom dit duur kan zijn.~12 min

03 · Ankers en grenzen

4 lessen

Positie, geen karakters: verankering aan het begin/einde van de string, aan de woordgrenzen, en aan het begin/einde van elke regel met de `m`-vlag.

  1. 3.1Begin en einde: `^` en `$`Een patroon verankeren aan het eerste of laatste teken van de string.~8 min
  2. 3.2Woordgrenzen: `\b` `\B`De overgang tussen woord- en niet-woordkarakters; hele woorden vinden.~10 min
  3. 3.3De `m`-vlag: meerdere regelsMet de vlag `m` verankeren `^` en `$` aan het begin/einde van elke regel.~10 min
  4. 3.4Lege lijnen en trimmenHandige patronen: lege regels matchen, witruimte aan het begin/einde van een regel inkorten.~10 min

04 · Groepen en afwisseling

4 lessen

Groepeer met `()`, kies uit alternatieven met `|`, vermijd vastleggen met `(?:...)`, geef groepen een naam met `(?<naam>...)` en verwijs terug naar een eerdere opname met terugverwijzingen.

  1. 4.1Groepen vastleggen: `(...)`Haakjes om te groeperen en vast te leggen; toegang tot groepen 1, 2, 3... in wedstrijden.~10 min
  2. 4.2Afwisseling: `|`De pijp kiest tussen twee of meer subpatronen; prioriteit en haakjes.~10 min
  3. 4.3Niet-vastleggende groepen: `(?:...)`Groeperen zonder een opname te maken: handig als u alleen hoeft te kwantificeren of af te wisselen.~10 min
  4. 4.4Benoemde groepen en terugverwijzingen`(?<naam>...)` om een naam op te geven; `\1` `\k<naam>` om terug te verwijzen naar de opname.~12 min

05 · Karakterklassen

4 lessen

Definieer aangepaste sets met `[...]`, gebruik bereiken, negeer met `[^...]` en bereik Unicode-eigenschappen met `\p{...}` en de vlag `u`.

  1. 5.1Tekensets: `[abc]`Vierkante haakjes definiëren een reeks tekens die op één positie zijn toegestaan.~8 min
  2. 5.2Bereik binnen klassen: `[a-z0-9]`Intervallen via het dashboard; het combineren van bereiken en enkele karakters.~8 min
  3. 5.3Ontkenning: `[^...]`Een genegeerde klasse komt overeen met alles **behalve** de vermelde tekens.~8 min
  4. 5.4Unicode-eigenschap ontsnapt`\p{L}`, `\p{N}`, `\p{Script=...}` met de vlag `u`: semantische Unicode-klassen.~12 min

06 · Rondkijken

4 lessen

Beweringen met nulbreedte: kijk vooruit of achteruit in de tekenreeks zonder tekens te verbruiken. Kijk vooruit `(?=)` `(?!)`, kijk achter `(?<=)` `(?<!)`.

  1. 6.1Positieve vooruitblik: `(?=...)`Controleer of een bepaald patroon de huidige positie volgt, zonder deze te verbruiken.~10 min
  2. 6.2Negatieve vooruitblik: `(?!...)`Controleer of een bepaald patroon NIET de huidige positie volgt.~10 min
  3. 6.3Kijk achter: `(?<=...)` `(?<!...)`De "terugblik"-versies van lookaround; ES2018+-ondersteuning.~12 min
  4. 6.4Rondkijken in de praktijkExtraheer een waarde zonder de context op te nemen, valideer wachtwoorden, ontleed gescheiden getallen.~12 min

07 · Vlaggen, vervanging, splitsing

4 lessen

Alle vlaggen (incl. `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` met regex, referenties `$1`/`$<name>` in de substitutiestring en vervangen callbacks.

  1. 7.1Alle vlaggen in detail`g i m s u v y d`: wat ze allemaal doen en hoe ze worden gecombineerd.~12 min
  2. 7.2Basisvervanging en `$1`Vervang overeenkomsten door een vaste tekenreeks of door terugverwijzingen `$1` / `$<naam>`.~10 min
  3. 7.3Vervangen door een terugbelverzoekVervangingsfunctie: transformeer elke wedstrijd met willekeurige JS-code, toegang tot groepen.~12 min
  4. 7.4Splitsen met regexSplits een tekenreeks op een patroon (permissieve CSV, minimale tokenizer).~10 min

08 · Praktijk

4 lessen

Zet alles op een rij voor echte problemen: e-mails valideren, logs analyseren, URL's/IP's extraheren, ReDoS-bestendige patronen schrijven.

  1. 8.1Een e-mail validerenEen 'goed genoeg'-patroon voor e-mails, waarbij de afwegingen worden uitgelegd.~12 min
  2. 8.2Apache-logparserExtraheer IP-, methode-, pad- en statuscode uit een logregel met behulp van benoemde groepen.~12 min
  3. 8.3URL's en IP's extraherenHerken http(s)-URL's en IPv4-adressen in vrije tekst.~12 min
  4. 8.4ReDoS-veilige patronen schrijvenHerken catastrofale patronen (`(a+)+b`), refactoreer ze, gebruik atomair-achtige kwantoren.~14 min