In dit artikel
Wat zijn reguliere expressies?
Reguliere expressies (regex) zijn reeksen tekens die zoekpatronen definiëren. Ze worden in vrijwel elke programmeertaal en teksteditor gebruikt om strings te vinden, matchen en bewerken op basis van regels in plaats van exacte tekst. Eén enkel regex-patroon kan duizenden verschillende strings matchen die een gemeenschappelijke structuur delen.
Regex-syntaxis kan er op het eerste gezicht cryptisch uitzien, maar volgt een logische grammatica: letterlijke tekens matchen zichzelf, speciale metatekens zoals . (elk teken), * (nul of meer) en [] (tekenklassen) definiëren flexibele matchregels. Leren om regex-patronen te lezen ontsluit krachtige tekstverwerkingsmogelijkheden die anders tientallen regels code zouden vereisen.
Hoe regex-patronen werken
Een regex-engine verwerkt uw patroon teken voor teken tegen de invoertekst, volgt mogelijke matches en keert terug wanneer een pad faalt. Het begrijpen van enkele kernbouwstenen maakt elk patroon leesbaar.
- Tekenklassen en kwantoren -- [a-z] matcht elke kleine letter, \d matcht elk cijfer, + betekent een of meer, en {2,4} matcht tussen 2 en 4 herhalingen
- Groepen en alternatie -- haakjes () maken vanggroepen voor het extraheren van submatches, terwijl de pipe-operator | OF-logica biedt tussen alternatieven
- Ankers en lookaheads -- ^ en $ verankeren matches aan het begin en einde van een regel, terwijl lookaheads (?=...) en lookbehinds (?<=...) voorwaarden controleren zonder tekens te verbruiken
Probeer gratis — geen aanmelding vereist
Een regex-patroon uitleggen →Wanneer regex gebruiken
Reguliere expressies zijn het standaardgereedschap voor patroongebaseerde tekstverwerking in softwareontwikkeling.
- Formuliervalidatie -- controleer of gebruikersinvoer overeenkomt met verwachte formaten zoals e-mailadressen, telefoonnummers of postcodes zonder aangepaste parselogica te schrijven
- Loganalyse -- extraheer tijdstempels, foutcodes en IP-adressen uit serverlogboeken met vanggroepen om ongestructureerde tekstgegevens te structureren
- Zoeken en vervangen -- voer bulkteksttransformaties uit in code-editors of buildscripts, zoals het hernoemen van variabelen of het herformatteren van datumstrings in een hele codebase
Veelgestelde vragen
Wat is het verschil tussen regex en glob-patronen?
Glob-patronen (zoals *.txt) zijn eenvoudigere jokerpatronen die voornamelijk worden gebruikt voor bestandsnaammatching in shells. Regex is veel expressiever: het ondersteunt alternatie, kwantoren, lookaheads, terugverwijzingen en tekenklassen. Gebruik globs voor bestandspaden en regex voor tekstinhoudmatching.
Wat is greedy vs lazy matching?
Greedy kwantoren (*, +, {n,m}) matchen zoveel mogelijk tekst, terwijl lazy kwantoren (*?, +?, {n,m}?) zo weinig mogelijk matchen. Bijvoorbeeld, bij de invoer <b>vet</b> matcht het greedy patroon <.*> de hele string, terwijl <.*?> alleen <b> matcht. Gebruik lazy kwantoren wanneer u de kortst mogelijke match nodig heeft.
Kunnen regex prestatieproblemen veroorzaken?
Ja. Bepaalde patronen met geneste kwantoren kunnen catastrofale backtracking veroorzaken, waarbij de engine een exponentieel aantal paden verkent. Patronen zoals (a+)+ op een lange string van a's kunnen uw programma laten vastlopen. Vermijd geneste kwantoren op overlappende tekensets, gebruik atomaire groepen waar beschikbaar en test patronen tegen worst-case invoer.