Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Regex-Syntaxis en Basispatronen | Introductie tot Reguliere Expressies
Python Regular Expressions

Regex-Syntaxis en Basispatronen

Veeg om het menu te tonen

Regex-syntaxis: bouwstenen

Reguliere expressies, of regex, worden opgebouwd met een combinatie van letterlijke tekens, metatekens, tekenklassen en kwantoren. Inzicht in deze componenten is essentieel voor het schrijven van effectieve patronen.

  • Letterlijke tekens zijn gewone tekens die zichzelf matchen. Bijvoorbeeld, het patroon "cat" matcht exact de tekenreeks "cat";
  • Metatekens zijn speciale symbolen met een unieke betekenis in regex. De meest voorkomende metatekens zijn:
    • . (punt): matcht elk enkel teken behalve een regeleinde;
    • ^: matcht het begin van een tekenreeks;
    • $: matcht het einde van een tekenreeks;
    • *: matcht nul of meer keren het voorgaande element;
    • +: matcht één of meer keren het voorgaande element;
    • ?: matcht nul of één keer het voorgaande element.
  • Tekenklassen maken het mogelijk om één teken uit een verzameling tekens te matchen. Bijvoorbeeld, [abc] matcht "a", "b" of "c", en [0-9] matcht elk cijfer van 0 tot 9.

Nuttige lettergebaseerde metatekens en kwantoren

  • \w: matcht elk woordteken (gelijk aan [a-zA-Z0-9_]). Gebruik dit om één letter, cijfer of underscore te matchen;
  • \W: matcht elk niet-woordteken (alles wat niet door \w wordt gematcht);
  • \d: matcht elk cijfer (gelijk aan [0-9]);
  • \D: matcht elk niet-cijfer teken;
  • \b: matcht een woordgrens (de positie tussen een woordteken en een niet-woordteken). Gebruik dit om woorden als geheel te matchen;
  • \B: matcht een positie niet op een woordgrens.

Kwantoren

Kwantoren geven aan hoe vaak het voorgaande element moet voorkomen:

  • *: matcht nul of meer keer; bijvoorbeeld, \w* matcht elke reeks woordtekens, inclusief een lege tekenreeks;
  • +: matcht één of meer keer; bijvoorbeeld, \w+ matcht één of meer opeenvolgende woordtekens (zoals een woord);
  • ?: matcht nul of één keer; bijvoorbeeld, \w? matcht nul of één woordteken;
  • {n}: matcht exact n keer; bijvoorbeeld, \w{3} matcht exact drie woordtekens achter elkaar;
  • {n,}: matcht n of meer keer; bijvoorbeeld, \w{2,} matcht twee of meer woordtekens;
  • {n,m}: matcht tussen n en m keer; bijvoorbeeld, \w{2,5} matcht van twee tot vijf woordtekens achter elkaar.

Voorbeelden in Python

  • re.findall(r"\w+", "Regex123 is fun!") retourneert alle woorden: ["Regex123", "is", "fun"];
  • re.findall(r"\bcat\b", "The cat scattered the catalog.") matcht alleen het losse woord "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") vindt alle reeksen van exact vijf woordtekens: ["apple", "banan"].

Deze metatekens en kwantoren zijn essentieel voor het matchen van letters, woorden en woordachtige patronen in tekst met behulp van de re-bibliotheek van Python.

123456789101112131415
import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)

In dit voorbeeld gebruik je de functie re.findall() om te zoeken naar overeenkomsten in de tekenreeks "User123, admin42, guestX". Het patroon [0-9] matcht elk cijfer tussen 0 en 9, waardoor alle afzonderlijke cijfers in de tekst worden gevonden. Het patroon [a-z] matcht elke kleine letter van "a" tot "z", en [A-Z] matcht elke hoofdletter van "A" tot "Z". Elke tekenklasse staat tussen vierkante haken, waarmee het bereik of de set tekens wordt gespecificeerd die gematcht moeten worden. Deze patronen zijn fundamenteel voor het extraheren van specifieke typen tekens uit tekst.

123456789101112131415161718192021222324252627
import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)

Hier zie je hoe je de Python-functie re.findall() gebruikt met verschillende regex-patronen om informatie uit de string "Hello_123 world! Regex is fun." te halen. Dit doet elk patroon:

  • \w: Het patroon r"\w" komt overeen met elk woordteken, waaronder letters (zowel hoofdletters als kleine letters), cijfers en de underscore (_). In de gegeven string vindt dit elk individueel woordteken, zoals 'H', 'e', 'l', 'o', '1', '2', '3', enzovoort.

  • \W: Het patroon r"\W" komt overeen met elk niet-woordteken. Dit omvat spaties, leestekens en symbolen die geen letters, cijfers of underscores zijn. In de string vindt dit tekens zoals spaties, het uitroepteken (!) en de punt (.).

  • \b: Het patroon r"\b\w+\b" gebruikt woordgrenzen (\b) om volledige woorden te matchen. Hier matcht \w+ één of meer woordtekens, zodat dit volledige woorden zoals 'Hello_123', 'world', 'Regex', 'is' en 'fun' als aparte elementen ophaalt.

  • * kwantor: Het patroon r"o\w*" matcht het teken 'o' gevolgd door nul of meer woordtekens. Dit betekent dat het zowel 'o' matcht als er geen woordtekens volgen, of een reeks die begint met 'o' en doorgaat met eventuele volgende woordtekens. In de string vindt dit 'o_123' (uit 'Hello_123') en 'orld' (uit 'world').

  • + kwantor: Het patroon r"R\w+" matcht het teken 'R' gevolgd door één of meer woordtekens. Dit is handig om woorden te vinden die beginnen met 'R' en verdergaan met extra woordtekens. In de string vindt dit 'Regex'.

  • ? kwantor: Het patroon r"le?" matcht de letter 'l' optioneel gevolgd door 'e'. De ? kwantor betekent dat het voorgaande teken ('e') nul of één keer mag voorkomen. Dit patroon matcht zowel 'l' als 'le' waar ze ook voorkomen in de string.

Elk van deze patronen benadrukt een belangrijk kenmerk van reguliere expressies—het matchen van specifieke tekentypen, grenzen en herhalende elementen—waardoor het eenvoudiger wordt om informatie uit tekst te halen of te analyseren in Python.

question mark

Waarmee komt het regex-patroon [a-z] overeen?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 1. Hoofdstuk 2
some-alt