Naar hoofdinhoud
Gemiddelde Python2026-07-31 · 11 min leestijd

Python Regex uitgelegd (2026)

Regex is de meest gevreesde functie van Python. Het is niet zo moeilijk, maar 80% van de tutorials laadt eerst de theorie (\d, \w, hebzuchtig versus lui) voordat ze je een enkel patroon laten zien dat je daadwerkelijk in echte code zou gebruiken. Deze tutorial draait dat om.

We behandelen: de basisprincipes van de re-module, de vijf patronen die 90% van het echte werk bestrijken, wanneer re.compile daadwerkelijk helpt, benoemde groepen versus genummerde, en de vier gevallen waarin regex het VERKEERDE hulpmiddel is.

De module in 60 seconden

Alles bevindt zich in de stdlib re-module. Drie functies voorzien in de meeste behoeften:

▶ PYTHONeditable · runs in your browser

Regel: gebruik re.search bij twijfel. re.match controleert alleen de start; vergeten dat dit leidt tot "mijn regex komt niet overeen!" 30 minuten verloren.

Ruwe snaren — gebruik ze altijd

Het voorvoegsel r"..." schakelt de interpretatie van de backslash uit. Zonder dit wordt "\d" "\\d" in Python, wat de regex-engine ziet als \d — hetzelfde resultaat, maar alleen per ongeluk en alleen voor \d. "\n" in een regex is een nieuwe regel, niet de twee tekens ` + n`.

▶ PYTHONeditable · runs in your browser

Spiergeheugen: elke letterlijke regex begint met r. Geen uitzonderingen.

De 5 patronen die 90% van het echte werk bestrijken

1. Extraheer alle gehele getallen uit de tekst

▶ PYTHONeditable · runs in your browser

Opmerking 199.99 wordt opgesplitst in ['199', '99'] — \d+ gaat niet boven de punt. Gebruik r"\d+(?:\.\d+)?" voor optionele decimalen:

▶ PYTHONeditable · runs in your browser

2. Witruimte normaliseren

▶ PYTHONeditable · runs in your browser

\s+ komt overeen met elke reeks spaties / tabbladen / nieuwe regels. Vervang door een enkele spatie, verwijder de randen. Dit is het antwoord van Python op sed -E 's/[[:space:]]+/ /g'.

3. Extraheer de hostnaam uit een URL

▶ PYTHONeditable · runs in your browser

De haakjes creëren een capture-groep; .group(1) retourneert de inhoud ervan. [^/:]+ = "een of meer tekens die niet / of :" zijn — stopt bij het poortscheidingsteken OF het pad.

Voor het parseren van productie-URL's gebruikt u urllib.parse.urlparse (behandelt randgevallen zoals gebruikersinfo + IPv6). Regex is voor snelle en vuile extractie.

4. Losse e-mailvalidatie

Er is GEEN regex die e-mails volledig valideert volgens RFC 5322. Iedereen die u iets anders vertelt, verkoopt iets. Maar deze vangt 99% van de echte adressen op zonder de goede adressen foutief af te wijzen:

▶ PYTHONeditable · runs in your browser

Ankers (^ en $) forceren een volledige stringmatch. Zonder hen zou "foo@bar" in een grotere zin overeenkomen.

Productie: stuur een bevestigingsmail. Dat is de ENIGE betrouwbare e-mailvalidator.

5. Benoemde opnamegroepen

Genummerde groepen ((...) + .group(1)) zijn prima voor 2-3 opnames. Verder winnen namen:

▶ PYTHONeditable · runs in your browser

.groupdict() retourneert een dictaat van alle benoemde groepen. Groepen toevoegen/herschikken zonder elke call-site te verbreken die naar .group(3) verwijst.

re.compile — als het echt helpt

▶ PYTHONeditable · runs in your browser

De stdlib onderhoudt een kleine cache met gecompileerde patronen (standaardgrootte 512), dus eenmalige re.search(pattern, text)-aanroepen zijn effectief gratis na de eerste treffer. re.compile helpt expliciet wanneer:

1. Het patroon wordt gebruikt in een strakke lus (miljoenen lucifers).

2. U wilt het patroon opslaan als een constante op moduleniveau voor grep-mogelijkheden.

3. Je hebt .finditer(), .pattern, .flags nodig voor het gecompileerde object.

Overcompileer niet. Elke re.compile op moduleniveau brengt kleine importkosten met zich mee.

Gemeenschappelijke vlaggen

▶ PYTHONeditable · runs in your browser

Combineer met |: re.IGNORECASE | re.MULTILINE.

Wanneer regex het VERKEERDE hulpmiddel is

1. HTML / XML parseren → gebruik een echte parser

▶ PYTHONeditable · runs in your browser

Het klassieke Stack Overflow-antwoord hiervoor is 20 jaar oud en nog steeds waar.

2. JSON parseren → gebruik json

De json-module verwerkt geneste aanhalingstekens, ontsnapte tekens, Unicode en elk RFC 8259-randgeval. Regex-parsing van JSON is een anti-patroonsignaal.

3. Datums parseren → gebruik dateutil of datetime.strptime

dateutil.parser.parse("2026-07-30") accepteert elk formaat dat een mens kan typen. datetime.strptime verwerkt bekende formaten efficiënt. Beide hanteren tijdzones. Regex zou alles opnieuw moeten uitvinden.

4. Geneste / recursieve patronen → gebruik een parsergenerator

Overeenkomende parens, geneste JSON en gebalanceerde expressies vallen formeel buiten de macht van regex (contextvrij grammaticagebied). Gebruik pyparsing / lark / ANTLR — of loop gewoon door de string met een kleine parser.

Foutopsporing in regex

Gebruik regex101.com (kies de smaak "Python"). Plak het patroon + voorbeeldtekst; het markeert wedstrijden in realtime, legt elk metakarakter uit en toont benoemde groepen. Snelste manier om regex intuïtief te leren.

Voor foutopsporing op codeniveau drukt re.DEBUG de gecompileerde statusmachine af:

▶ PYTHONeditable · runs in your browser

Oefenen

Schrijf voor elk een regex. Oplossingen hieronder.

1. Extraheer het versienummer uit "Python 3.13.2 (main, Jan 15 2026, 10:32:11)" — zou "3.13.2" moeten retourneren.

2. Splits "apple,banana; cherry orange" op een willekeurig scheidingsteken (,, ;, of spatie).

3. Herschrijf foo.bar_baz-123 als FOO.BAR_BAZ-123 (alleen hoofdletters, laat cijfers en leestekens staan).

Oplossingen:

▶ PYTHONeditable · runs in your browser

Regex is een superkracht zodra je voorbij de eerste 10 patronen bent. De truc is om spiergeheugen op te bouwen op de vijf hierboven: ze dekken 90% van het echte werk. Zoek een echte parser op het moment dat u merkt dat u terugverwijzingen schrijft om de balans in evenwicht te brengen.

Volgende stap: regex + tekstverwerkingslessen in het automatiseringstraject — oefen met logbestanden, CSV-gegevens en webscraping-taken terwijl echte Python in uw browser draait.

Klaar om het te proberen?

15 lessen gratis na een gratis aanmelding — geen kaart. Proef het platform en beslis dan.

Begin gratis →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.