Cursus
Moest je ooit een lijst met telefoonnummers in verschillende formaten standaardiseren? Of trefwoorden uit vrije-tekstvelden halen? Maak kennis met RegEx! RegEx, kort voor reguliere expressies, zijn krachtige en flexibele patronen die worden gebruikt om strings in tekstblokken te matchen. In dit artikel bespreken we veelvoorkomende regex-syntaxis, hoe je regex in Excel inschakelt en tot slot hoe je ze effectief gebruikt.
Wat zijn reguliere expressies?
Reguliere expressies, vaak afgekort als "regex" of "regexp", zijn een manier om een zoekpatroon te definiëren dat kan worden gebruikt voor uiteenlopende tekstbewerkingen zoals zoeken, parsen en/of tekst vervangen. Reguliere expressies worden veel gebruikt in programmeren, teksteditors en andere software voor taken die patroonherkenning vereisen. De regex-variant, of syntaxis, in Excel is gebaseerd op de .NET-regular-expression-engine.
Veelvoorkomende reguliere expressies
Reguliere expressies kunnen worden gegroepeerd op basis van de kenmerken die ze definiëren. Hieronder staan veel voorkomende reguliere expressies die je zult tegenkomen.
Letterlijke tekens
Reguliere expressies kunnen letterlijke tekens bevatten die zichzelf matchen. Zo matcht de regex "hello" exact de string "hello".
Metatekens
Reguliere expressies bevatten ook metatekens, die een speciale betekenis hebben. Enkele veelvoorkomende metatekens zijn:
.(punt): Matcht elk enkel teken behalve een regeleinde.*: Matcht nul of meer voorkomens van het voorgaande teken of de voorgaande groep.+: Matcht één of meer voorkomens van het voorgaande teken of de voorgaande groep.?: Matcht nul of één voorkomen van het voorgaande teken of de voorgaande groep.|(pipe): Werkt als een logische OF en laat je alternatieven opgeven.()(haakjes): Groepeert tekens of subpatronen.[](rechte haken): Definieert een tekenklasse waarmee je één teken uit een set tekens kunt matchen.^(dakje): Matcht het begin van een regel of string.$: Matcht het einde van een regel of string.\(backslash): Escape’t een metateken om het letterlijk te matchen.
Tekenklassen
Tekenklassen in reguliere expressies (regex) zijn speciale notaties waarmee je één teken uit een set tekens kunt matchen. Ze vereenvoudigen regex-patronen door een compacte manier te bieden om een groep tekens te specificeren die gematcht moet worden. Je kunt rechte haken [...] gebruiken om tekenklassen te definiëren. Bijvoorbeeld, [aeiou] matcht elke klinker. [A-Z] matcht elke hoofdletter.
Quantifiers
Quantifiers (herhalingsaanduidingen) geven aan hoe vaak een bepaald patroon, teken of tekenklasse in de doelstring moet voorkomen om een match te vormen. Met andere woorden: ze geven aan hoe vaak een teken of groep moet worden herhaald. Bijvoorbeeld, a{3} matcht precies drie opeenvolgende "a"-tekens. ab? matcht "a" of "ab".
Ankers
Ankers zijn speciale tekens die geen enkel teken in de string matchen. In plaats daarvan matchen ze een positie vóór, na of tussen tekens. Ankers worden gebruikt om ervoor te zorgen dat het regex-patroon op een specifieke plek in de tekst voorkomt. Zo verankert ^ het patroon aan het begin van de string en $ aan het einde.
Modifier
Modifiers zijn tekens die veranderen hoe de regex-engine het patroon interpreteert. Ze worden gebruikt om het gedrag van de regex-match aan te passen voor meer flexibiliteit en controle. Modifiers kunnen verschillende aspecten van het matchproces beïnvloeden, zoals hoofdlettergevoeligheid, multiline-matching en hoe speciale tekens worden geïnterpreteerd. Zo maakt i het patroon niet-hoofdlettergevoelig, en g maakt het globaal, zodat alle voorkomens in de invoer worden gematcht.
Toepassingen van reguliere expressies in Excel
RegEx is nuttig in verschillende scenario’s:
Gegevensvalidatie
In de meeste gevallen moet je de gegevens valideren om zeker te weten dat je naar de juiste informatie kijkt. Een klassiek voorbeeld is telefoonnummers. In de VS is het standaardformaat (###) ###-####. Maar ze kunnen ook zo worden geschreven: ###-###-####, (+#) ### ### ####, ##########, enzovoort. RegEx kan helpen vaststellen dat de informatie in het bestand inderdaad telefoonnummers zijn. De volgende reguliere expressie geeft een match op 10-cijferige telefoonnummers, met een optionele landcode van 1 tot 2 cijfers: (\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$.
Tekstextractie
Lange zinnen zijn vaak lastig te parsen met traditionele spreadsheetsoftware. Om specifieke trefwoorden te extraheren, kun je RegEx gebruiken. Zo kunnen we, om boektitels tussen enkele aanhalingstekens uit een interviewtranscript te halen, de volgende reguliere expressie gebruiken: '(.*?)'.
Tekstmanipulatie
Naast het extraheren van informatie kun je die ook transformeren en standaardiseren voor rapportagedoeleinden. Stel dat we de eerste vijf cijfers van Amerikaanse ZIP-codes willen extraheren. We kunnen alle instanties van een veld met ZIP-codes vervangen met behulp van de reguliere expressie ^\d{5}.
Tokenization
Tokenization is het proces waarbij tekst wordt opgesplitst in afzonderlijke tokens of woorden. Regex-patronen kunnen worden gebruikt om regels voor het tokenizen van tekst te definiëren. Zo kun je \s+ gebruiken om tekst op witruimtetekens te splitsen of \W+ om te splitsen op niet-woordtekens zoals leestekens.
Voor informatie over extra patronen, bekijk onze Regular Expression in Python-cheatsheet.
RegEx gebruiken in Excel
Hoewel Excel niet standaard RegEx ondersteunt, kun je het inschakelen door je eigen aangepaste functie te schrijven met een VBA-script (voor Windows) of door add-ins in te schakelen (voor Mac). We lopen door hoe je een regex-functie inschakelt om tekst uit een kolom in Excel te extraheren.
Voor Windows
Druk om te beginnen op Alt+F11 om de Visual Basic Editor te openen. Je kunt er ook naartoe navigeren via Extra > Macro > Visual Basic Editor. Klik daarna op Invoegen > Module.
Plak de volgende functie in de module:
Public Function CustomRegExpExtract(inputText As String, regexPattern As String, Optional instanceNumber As Integer = 0, Optional matchCase As Boolean = True) As Variant
Dim textMatches() As String
Dim matchesIndex As Integer
Dim regex As Object
Dim matches As Object
On Error GoTo ErrHandler
CustomRegExpExtract = ""
' Create a regular expression object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = regexPattern
regex.Global = True
regex.MultiLine = True
' Set case sensitivity
If matchCase Then
regex.IgnoreCase = False
Else
regex.IgnoreCase = True
End If
' Execute the regex pattern on the input text
Set matches = regex.Execute(inputText)
If matches.Count > 0 Then
If instanceNumber = 0 Then
' If instanceNumber is 0, return all matches in an array
ReDim textMatches(matches.Count - 1, 0)
For matchesIndex = 0 To matches.Count - 1
textMatches(matchesIndex, 0) = matches.Item(matchesIndex)
Next matchesIndex
CustomRegExpExtract = textMatches
Else
' If instanceNumber is specified, return the match at that instance
CustomRegExpExtract = matches.Item(instanceNumber - 1)
End If
End If
Exit Function
ErrHandler:
' Handle errors by returning an error value
CustomRegExpExtract = CVErr(xlErrValue)
End Function
' Modified from an original script by Patrick Matthews
Sla de functie op en ga terug naar het werkblad. Sla de werkmap nu op als een macro-compatibele werkmap met de extensie .xlsm.
De functie gebruiken in een Excel-werkblad
Door macro’s in je Excel-werkmap in te schakelen, kun je de functie CustomRegExpExtract nu net als een gewone functie in Excel gebruiken om complexe stringpatronen te parsen, waarbij:
inputTextde originele string is die je wilt parsen;
regexPatternhet reguliere-expressiepatroon is dat wordt gebruikt om de inputText te parsen;
instanceNumberstandaard alle instanties van het patroon retourneert, maar je kunt een geheel getal invoeren om het aantal te retourneren instanties te specificeren; en
matchCaseaangeeft of je hoofdlettergebruik meeweegt tijdens het matchen (TRUE of weggelaten) of juist negeert (FALSE).
Stel dat we geïnteresseerd zijn in het extraheren van telefoonnummers uit een veld. We kunnen het regex-patroon in een willekeurige cel typen (in het onderstaande geval staat het in cel A2). In cel A6 staat je vrije-tekstvoorbeeld, "Sophia, 1111111111". In cel B6 typen we =CustomRegExpExtract(A6,$A$2). De functie extraheert het telefoonnummer door de string te matchen met het regex-patroon in cel A2 en retourneert "1111111111", zoals verwacht.

Voor Mac OS
Helaas herkent Mac OS de bibliotheek MS VBScript Regular Expressions 5.5 niet. Om complexe patroonherkenning in Excel op een Mac mogelijk te maken, zijn er twee opties: gebruik geavanceerde filters of installeer pakketten.

Geavanceerde filters gebruiken
Geavanceerde filters in Excel helpen bij het uitvoeren van complexe gegevensfilterbewerkingen op basis van meerdere criteria. Deze functie is vooral handig bij grote datasets. Zo gebruik je geavanceerde filters in Excel:
- Je gegevens voorbereiden: Zorg dat je gegevens in een tabelachtige opmaak staan met duidelijke koppen.
- Een criteriabereik maken: Maak een apart gebied in je werkblad om de criteria voor het filteren te definiëren. Dit gebied moet dezelfde koppen hebben als de kolommen die je wilt filteren. Specificeer onder deze koppen de criteria voor het filteren. Je kunt meerdere criteria onder dezelfde kop invoeren voor een "OF"-logica, of in afzonderlijke rijen voor een "EN"-logica.
- Selecteer de gegevens: Klik op een cel binnen je dataset, of selecteer het volledige bereik dat je wilt filteren.
- Stel het filter in: Klik op het tabblad Gegevens in het lint van Excel en ga naar de optie Geavanceerd filter. Klik op Geavanceerd in de groep Sorteren & filteren. Kies in het dialoogvenster Geavanceerd filter of je de lijst ter plekke wilt filteren of de resultaten naar een andere locatie wilt kopiëren. Geef het Lijstreferentiebereik op (je gegevens). Geef het Criteriabereik op (waar je de filtervoorwaarden hebt ingesteld). Klik op OK om het filter toe te passen.
Stel, je hebt een dataset met de kolommen Name, Age, City. Je wilt filteren op mensen ouder dan 30 in New York of iedereen in Los Angeles. Je criteriabereik kan er als volgt uitzien:
|
Name |
Age |
City |
|
>30 |
New York |
|
|
Los Angeles |
Add-ins installeren
- Kutools for Excel: Kutools is een uitgebreide add-in met veel functies, waaronder de mogelijkheid om data te zoeken en te vervangen met regex. Er wordt een nieuw tabblad aan het Excel-lint toegevoegd met een breed scala aan tools, inclusief regex-functies.
- RegEx Find/Replace: Dit is een add-in voor Excel waarmee je tekst kunt zoeken en vervangen met reguliere expressies. Het integreert in Excel en biedt geavanceerdere zoek-/vervangfunctionaliteit dan de ingebouwde optie.
- PowerGREP: Hoewel dit geen directe Excel-add-in is, kan PowerGREP met Excel-bestanden werken. Het is een krachtige grep-tool voor Windows waarmee je complexe regex-bewerkingen op tekst- en binaire bestanden kunt uitvoeren. Het is meer een standalone-applicatie, maar kan in combinatie met Excel worden gebruikt voor geavanceerde regex-verwerking. Het is echter niet goedkoop. Een licentie voor één gebruiker kost $159 en de prijs loopt op tot $5.300 voor een licentie voor 100 gebruikers.
Sommige add-ins zijn rechtstreeks in Excel te vinden via het tabblad Invoegen > Invoegtoepassingen ophalen.
Andere moeten van een externe bron worden gedownload en volgens hun installatie-instructies worden geïnstalleerd.
Enkele aandachtspunten:
- Compatibiliteit: Zorg dat de add-in compatibel is met jouw Excel-versie en besturingssysteem.
- Beveiliging: Download en installeer add-ins alleen van betrouwbare bronnen.
- Functionele behoeften: Bedenk welke regex-taken je wilt uitvoeren en kies een add-in die daar het beste bij past.
Conclusie
In de meeste gevallen helpen ingebouwde functies zoals FIND, SEARCH en REPLACE je met 90% van je tekstbewerkingsbehoeften in Excel. Maar voor de overige 10%, in gevallen met complexere stringpatronen, kan regex enorm helpen. Wil je meer leren over het toepassen van reguliere expressies in populaire programmeertalen? Bekijk dan onze cursussen Regular Expressions in Python en Intermediate Regular Expressions in R.
Wil je snel wegwijs worden in alles rond Excel? Bekijk dan onze Excel Fundamentals-skilltrack, die je meeneemt door de essentiële vaardigheden om vaardig met de tool te worden.

Overdag data-analist, ’s avonds verhalenverteller. Ik gebruik graag mijn kennis om de kloof in data-geletterdheid te overbruggen en nieuwkomers te helpen de overstap naar het vak te maken. Mijn filosofie is: elke dag iets leren, al is het maar 5 minuten!
