Complete Referentie voor Reguliere Expressies (Multilanguage & Multiline)

Overzicht (What)

Dit artikel is een allesomvattende technische referentie voor het gebruik van reguliere expressies in praktische en overdraagbare contexten. Het behandelt syntaxis, multiline matching, vervangingstechnieken, toolcompatibiliteit en onderhoudbare patroonontwerpen.

Doel (Why)

Reguliere expressies zijn essentieel voor validatie, parsing, conversie en gegevensuitwisseling. Correct gebruik maakt efficiënte automatisering en analyse mogelijk in elke programmeertaal of omgeving.


Deel 1: Basisgrammatica

Patroon Betekenis Voorbeeld Matchvoorbeelden
. Eén willekeurig teken behalve newline a.c abc, a-c
* 0 of meer herhalingen van het vorige teken go*gle ggle, google
+ 1 of meer herhalingen go+gle gogle, google
? 0 of 1 keer colou?r color, colour
{n} Exact n keer a{3} aaa
{n,m} Tussen n en m keer a{2,4} aa, aaa, aaaa
^ Begin van de regel ^abc Regels die beginnen met abc
$ Einde van de regel abc$ Regels die eindigen met abc
[] Een van de tekens tussen de haakjes [abc] a, b, c
[^] Alles behalve [^0-9] Niet-numerieke tekens
\d Cijfer \d+ 123, 007
\D Geen cijfer \D+ abc, XYZ
\w Woordteken (alfanumeriek + _) \w+ abc_123
\W Geen woordteken \W+ #@!, witruimte
\s Witruimte \s+ Spatie, newline, tab
\S Geen witruimte \S+ abc, 123
` ` Of `foo
() Groepering (abc)+ abcabc
\b Woordgrens \bregex\b Match exact het woord

Deel 2: Praktische Patronen (Meertalige Ondersteuning)

Toepassing Patroon Opmerking
Alleen cijfers ^\d+$ Volledig numeriek
Getal met decimalen ^\d+\.\d+$ Eén decimaalpunt
Alleen alfanumeriek ^[a-zA-Z0-9]+$ Voor gebruikersnamen
E-mail (eenvoudig) ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ Basisformaat
URL (http/https) https?://[\w.-]+\.[a-zA-Z]{2,}(/[\w./?=&%-]*)? Met optioneel pad
ISO-datum \d{4}-\d{2}-\d{2} JJJJ-MM-DD
Internationaal tel.nr \+\d{1,3}[\s-]?\d{1,14} Voorbeeld: +31 6...
Gebruikersnaam ^[a-zA-Z0-9._-]{3,20}$ Voor social media
Sterk wachtwoord ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ Minimaal 1 hoofd-, kleinletter en cijfer

Deel 3: Meerdere Regels Matchen (Multiline)

🔹 Waarom [\s\S]*? gebruiken?

Veel engines matchen geen newline met .. De oplossing:

[\s\S]*?

Matcht alles inclusief newline, op een niet-gretige manier.

💡 Tip: Sommige tools ondersteunen ook [\s\S\n]*? als extra voorzorg.

🔹 Veelgebruikte Patronen

Toepassing Patroon Opmerking
Tekstblok [\s\S]*? Inclusief newlines
HTML <div> blok <div[\s\S]*?</div> Matcht volledig blok
HTML commentaar <!--[\s\S]*?--> Voor commentaarsecties
Markdown codeblok "[\s\S]*?" Match tussen backticks

Deel 4: Vervangingstechnieken

🔹 Groepsvervanging

Ondersteunde syntaxis per tool:

  • ${1}, ${2}: VSCode, .NET, Python
  • $1, $2: JavaScript, sed

🔹 Praktische Voorbeelden

Taak Patroon Vervanging
Woorden omdraaien (\w+)\s+(\w+) ${2} ${1}
Inpakken in <span> >([^<]+)< ><span>${1}</span><
CSV naar JSON ^([^,]+),([^,]+),([^,]+)$ { "a": "${1}", "b": "${2}", "c": "${3}" }
Datumformaat aanpassen (\d{4})/(\d{2})/(\d{2}) ${1}-${2}-${3}
CamelCase naar snake ([a-z])([A-Z]) ${1}_${2}

Deel 5: Toolondersteuning en Flags

Tool Multiline Support Niet-gretig Vervanging Opmerking
VSCode ✅ Zoekpaneel ${1} [\s\S]*? aanbevolen
JavaScript s-flag $1, $<name> Named groups ondersteund
Python (re) re.DOTALL \g<1>, \1 Gebruik r"" voor raw strings
sed \1, \2 Beperkte ondersteuning
grep/egrep Alleen zoekfunctionaliteit

Deel 6: Ontwerprichtlijnen en Anti-patronen

✅ Best Practices

  • Gebruik altijd [\s\S]*? voor multiline
  • Vermijd .*, gebruik niet-gretige alternatieven
  • Gebruik (?:...) voor niet-capturing groepen
  • Gebruik naamgroepen zoals (?<jaar>\d{4}) voor leesbaarheid
  • Bij complexe patronen: documenteer met re.VERBOSE of comments

❌ Anti-patronen

Patroon Probleem
.* Te gretig, kan te veel matchen
[^a-z] Niet geschikt voor accenten of Unicode
Geneste parsing Niet geschikt voor HTML/XML nesting
.+ Matcht ook op lege regels met witruimte

Conclusie

Deze gids biedt een solide referentie voor het veilig en efficiënt gebruik van reguliere expressies.
Gebruik [\s\S]*? als standaard voor multiline matching en pas syntaxis aan op de gebruikte tool.
Goed ontworpen expressies zijn herbruikbare, krachtige hulpmiddelen in elke workflow.

タイトルとURLをコピーしました