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.