Wat is Regex?
Regex (afkorting voor reguliere expressie of regexp) is een compacte taal voor het beschrijven van tekstpatronen. Als je ooit strings op grote schaal hebt moeten vinden, valideren of transformeren, is regex de snelste manier om dat te doen. In deze handleiding krijg je een duidelijke regex-definitie, een praktische regex-tutorial, een regex-cheatsheet en regex-voorbeelden voor kopiëren en plakken die werken in JavaScript, Python en analysetools.
In de kern is een reguliere expressie een patroon dat een regex-engine vergelijkt met invoertekst. Met een paar symbolen kun je e-mails vinden, URL's opschonen, ID's extraheren of formulieren valideren. De meeste talen worden geleverd met een regex-engine: JavaScript (ingebouwd), Python (opnieuw), en veel systemen gebruiken PCRE of RE2 onder de motorkap.
Gebruik regex als je consistentie en snelheid nodig hebt. Het is deterministisch, eenvoudig te testen met een regex-checker en overal in je stack overdraagbaar, van code tot datatools.
Waarom Regex gebruiken? Veelvoorkomende gebruikssituaties
Regex versnelt repetitief tekstwerk. Je schrijft een patroon één keer en laat het vervolgens over duizenden of miljoenen tekenreeksen lopen. Hieronder staan de meest voorkomende gebieden waar regex uitblinkt voor ontwikkelaars en marketeers.
Gegevens opschonen en extraheren
Regex is perfect voor het opschonen van gegevens: ruis verwijderen, formaten normaliseren en velden extraheren. Denk aan „regex data cleaning” voor analysepijplijnen, CRM-exports of productfeeds. U kunt snel SKU's isoleren, trackingparameters inkorten of namen en ID's splitsen.
- Normaliseer de behuizing en witruimte: s/+|\\ s+/ → enkele spatie.
- Tracking van URL's verwijderen: \\?. *$ →” (queryreeksen verwijderen).
- Productcodes extraheren: Artikelnummer- (\\ d {4,}) legt numerieke ID's vast.
In de panda's van Python maken gevectoriseerde regex-functies dit pijnloos. Voer in JavaScript een globale vervanging uit met /patroon/g om strings aan de clientzijde te transformeren voordat ze naar uw API worden verzonden.
Validatie en opschoning van de invoer
Regex voor validatie is een klassiek gebruik: e-mails, telefoonnummers, postcodes, btw-ID's en meer. U kunt duidelijke slechte invoer vroegtijdig blokkeren en uw database schoon houden.
- Snelcontrole van het e-mailformaat: ^ [^\\ s@] +@ [^\\ s@] +\\. [^\\ s@] +$.
- Basislijn van de E.164-telefoon: ^\\ +? [1-9]\\ d {7,14} $.
- Postcodes (landspecifiek): gebruik voorwaardelijke groepen en afwisselingen.
Gebruik de validatie niet te veel: streef naar „ziet er geldig uit” en voer vervolgens een grondige verificatie uit op de server. Regex is uitstekend geschikt voor syntaxiscontroles; bedrijfsregels moeten in code leven.
Zoeken, vervangen en transformeren
Met regex wordt Find-and-Replace een elektrisch gereedschap. Converteer formaten, herrangschik ze met opnamegroepen en voer veilig bulkbewerkingen uit.
- Namen opnieuw formatteren: ^ (\\ w+),\\ s* (\\ w+) $ → $2 $1 om „" Last, First "” naar „" First Last "” te schakelen.”
- Slugify-titels: bewaar [a-z0-9-], laat al het andere vallen, vouw spaties tot streepjes.
- Standaardiseer datums: herken meerdere ingangen en voer ISO 8601 uit.
Gebruik niet-hebzuchtige kwantoren en expliciete ankers om onbedoelde overeenkomsten te vermijden bij het transformeren van lange documenten of HTML-fragmenten.
Parseren en monitoren van logboeken
Regex helpt bij het analyseren van logboeken voor observabiliteit en beveiliging. Extraheer IP-adressen, statuscodes en paden uit Nginx- of toepassingslogboeken en waarschuw vervolgens voor afwijkingen.
- IP-adres: \\ b (? :\\ d {1,3}\\.) {3}\\ d {1,3}\\ b.
- HTTP-status: \\ s (2\\ d\\ d|3\\ d\\ d|4\\ d\\ d|5\\ d\\ d)\\ s.
- Detecteer verdachte gebruikersagenten: (bot|spin|kruip|zonder hoofd).
Met goede patronen kun je dashboards aansturen, fouten sneller sorteren en de kosten laag houden door alleen de velden te extraheren die je nodig hebt.
Cheatsheet voor de syntaxis van Regex
Hier is een compact regex-cheatsheet dat je in enkele seconden kunt scannen. Het bevat letterlijke tekens, karakterklassen, kwantoren, ankers, groepen, lookarounds en vlaggen - genoeg om de meeste patronen te lezen en te schrijven die je in de productie zult gebruiken.
Letterlijke en karakterklassen
Letterlijke woorden komen overeen met zichzelf. Speciale tekens (zoals ., *, ?, +, [, ], (, ), {, }, ^, $, |, \\) moeten ontsnappen om als letterlijk te worden behandeld.
- Punt: . komt overeen met elk teken (behalve de nieuwe regel in veel engines, tenzij dotall).
- Cijfer: \\ d (niet-cijfer \\ D), woordteken: \\ w (geen woord \\ W), witruimte: \\ s (geen witruimte) \\ S).
- Op maat gemaakte set: [abc] komt overeen met a, b of c; bereik: [a-z]; ontkenning: [^a-z].
- Ontsnappen: letterlijke punt \\., letterlijk pluspunt \\ +, letterlijke vraag \\?.
Kwantificatoren
Kwantificatoren specificeren „hoeveel” van de voorgaande token moeten overeenkomen. Ze zijn standaard hebberig; voeg ? achter ze aan om ze lui te maken.
- * = 0 of meer, + = 1 of meer, ? = 0 of 1.
- {n} = precies n, {n,} = n of meer, {n, m} = tussen n en m.
- Hebzuchtig versus lui: . + vs .+? (luie stops bij de eerste mogelijke wedstrijd).
- Bezittelijke kwantoren zoals ++ bestaan in sommige engines (PCRE, Java) maar niet in JavaScript of RE2.
Ankers en grenzen
Ankers verbruiken geen personages; ze bevestigen posities. Gebruik ze om patronen nauwkeurig en snel te maken.
- Start/einde: ^ (begin), $ (einde). Bij een vlag met meerdere regels gelden ze per regel.
- Woordgrenzen: \\ b (tussen woord en niet-woord), \\ B (geen grens).
- Lijngrenzen in logboeken en CSV's maken extractie eenvoudiger en veiliger.
Groepen, vastleggingen en terugverwijzingen
Met groepen kun je delen van een wedstrijd vastleggen of structureren. Opnames kunnen worden hergebruikt in vervangingen of er later naar worden verwezen in hetzelfde patroon.
- Vastleggen: (...). Niet vastleggen: (? :...) om te groeperen zonder op te slaan.
- Terugverwijzingen: \\ 1, \\ 2 verwijzen naar eerdere groepen (gebruik van JS-vervanging) $1, Python gebruikt \\ 1 of benoemde groepen).
- Benoemde groepen: (? <name>...) in veel engines; Python-vervanging door \\ g <name>.
Beweringen: vooruitkijken en achterom kijken
Lookarounds komen overeen met de context zonder deze te consumeren. Lookahead wordt breed ondersteund; de ondersteuning voor lookabehind verschilt per engine.
- Positieve/negatieve kijk: X (? =Y), X (?! Y).
- Positieve/negatieve kijk op de achtergrond: (? <=Y) X, (? <! Y) X (werkt in Python, moderne JavaScript-engines, niet in RE2/Looker Studio).
- Gebruik lookahead voor grenscontroles waarbij lookbehind niet beschikbaar is.
Vlaggen
Vlaggen wijzigen de manier waarop patronen worden uitgevoerd. Je ziet ze in lijn of als parameters.
- Vaak: ik (niet hoofdlettergevoelig), g (wereldwijd, JS), m (meerdere regels), s (punt alles), u (Unicode-bewust).
- JavaScript: /patroon/igm. Python: re.compileren ('patroon', Re.i | Rem.).
- Unicode is belangrijk voor gebruik in internationale winkels u waar beschikbaar.
Snelle voorbeelden die ontwikkelaars kunnen kopiëren
E-mailadres valideren
Gebruik regex om duidelijk misvormde e-mails op te sporen en controleer de bezorging vervolgens afzonderlijk. Een pragmatisch patroon is voldoende voor aanmeldingen en formulieren.
Patroon: ^ [^\\ s@] +@ [^\\ s@] +\\. [^\\ s@] +$
- JavaScript: /^ [^\\ s@] +@ [^\\ s@] +\\. [^\\ s@] +$/i.test (e-mail)
- Python: re.match (r'^ [^\\ s@] +@ [^\\ s@] +\\. [^\\ s@] +$', e-mail, re.I)
Vermijd uiterst strikte patronen die echte adressen weigeren. Houd de poort open; laat uw bevestigingsmail de harde controle uitvoeren.
ID's extraheren uit URL's
Als URL's numerieke of alfanumerieke ID's bevatten, leg ze dan samen met een groep vast. Dit is gebruikelijk voor product- of bestelpagina's.
Voorbeelden van patronen:
- /product/ (\\ d+) neemt nummers op na /product/.
- /artikelen/ (? :id|artikelnummer) - (\\ w+) legt „iD-ABC123" of „" SKU-xyz99"” vast.”
Gebruik in JS const m = url.match (/product\\/(\\ d+)/); in Python m = opnieuw zoeken (r'/product/ (\\ d+) ', url). Gebruik m [1] of m.groep (1) om toegang te krijgen tot de ID.
Telefoonnummers normaliseren
Verwijder eerst niet-cijfers en dwing vervolgens een formaat af. Deze aanpak in twee stappen is stabiel in alle landen.
- Alles verwijderen behalve cijfers: /\\ D+/g →”.
- Handhaaf de regels voor lengte en land en prepend + indien nodig.
Als u onderdelen moet vastleggen: ^ (? :\\ +? (\\ d {1,3}))? (\\ d {6,14}) $ scheidt de landcode en het lokale nummer om opnieuw te formatteren.
Query-tekenreeksen ontleden (UTM-extractie)
UTM-parameters extraheren voor campagneanalyse. Regex isoleert sleutel-waardeparen zonder een volledige parser.
- [? &] utm_source= ([^&#] +) voor de bron.
- [? &] utm_medium= ([^&#] +) voor medium.
- [? &] utm_campaign= ([^&#] +) voor de campagne.
In JavaScript, van toepassing Decodeuri-component naar vastgelegde waarden. Overweeg in Python urllib.parse voor robuustheid als je de codebase beheert.
HTML-tags veilig vervangen
Vuistregel: gebruik een HTML-parser voor complex werk. Voor eenvoudige sanering of het verwijderen van tags kan een beperkte regex acceptabel zijn.
Tags verwijderen maar tekst behouden: < [^>] +> → "(niet gebruiken bij onbetrouwbare invoer waar XSS een risico vormt). Gebruik voor veilige transformaties op grote schaal een parser en gebruik regex alleen voor de laatste aanpassingen.
Regex voor marketing: voorbeelden van Looker Studio
Waarom Regex in Looker Studio?
Met Regex in analysetools kun je gegevens groeperen, filteren en normaliseren, zonder het dashboard te verlaten. In Looker Studio ontgrendelt regex duidelijke kanaalgroeperingen, consistente landingspagina-paden en betrouwbare campagnetagging, vooral wanneer bronnen rommelig of onvolledig zijn.
Het is snel, transparant en gemakkelijk te onderhouden. Als u SEO-dashboards bouwt, kan regex het handmatig opschonen verminderen en week na week stabiele inzichten opleveren.
Campagnebron extraheren uit UTM
Gebruik REGEXP_EXTRACT om UTM-waarden rechtstreeks van pagina- of evenementparameters vast te leggen.
- Bron: REGEXP_EXTRACT (Landingspagina, r' [? &] utm_source= ([^&#] +) ')
- Gemiddeld: REGEXP_EXTRACT (Landingspagina, r' [? &] utm_medium= ([^&#] +) ')
- Campagne: REGEXP_EXTRACT (Landingspagina, r' [? &] utm_campaign= ([^&#] +) ')
Deze aanpak is veerkrachtig voor alle tracking-opstellingen en ideaal voor gemengde datasets. Zie onze handleiding voor bouwen voor meer informatie over de rapportagestructuur SEO-dashboards met Looker Studio.
Paden van landingspagina's normaliseren
Standaardiseer paden zodat je rapporten niet worden opgesplitst door schuine strepen of queryparameters. Dit maakt de analyse van landingspagina's schoner en trendlijnen stabiel.
- Query-tekenreeksen verwijderen: REGEXP_REPLACE (Landingspagina, r'\\?. *$', „)
- Verwijder de schuine streep (behalve de root): REGEXP_REPLACE (Pad, r' (.+?) /$', '\\ 1')
- Padsegmenten in kleine letters: gebruik een functie voor kleine letters, indien beschikbaar, gecombineerd met regex cleanup.
Wanneer je consistentie aan de bron afdwingt, blijven filters en segmenten betrouwbaar op al je dashboards.
Botverkeer filteren op User Agent-patroon
Blokkeer voor de hand liggende bots om scheve statistieken te vermijden. Begin met een breed netwerk en verfijn vervolgens op basis van je bezoekersaantallen.
- User Agent bevat: (bot|spin|kruip|koploos|scrapy|urllib).
- Sluit bekende uptime-monitoren uit om valse positieven te voorkomen.
- Combineer met IP-filters voor hardnekkige overtreders.
Controleer wijzigingen altijd op basis van een controleperiode. Te agressief filteren kan legitieme automatisering of partnerverkeer verbergen.
Opmerkingen over Looker Studio Escaping en Engine
Looker Studio maakt gebruik van een RE2-achtige engine. Dat betekent dat lookbehind niet wordt ondersteund, dat sommige geavanceerde backtracking-functies niet beschikbaar zijn en dat de prestaties voorspelbaar zijn.
- Geen achteromkijken: refactor om lookahead of verankerde opnames te gebruiken.
- Ontsnap voorzichtig: backslashes in tekenreeksen vereisen dubbele escaping, vooral in patronen met r-prefix en UI-velden.
- Geef de voorkeur aan expliciete ankers om gedeeltelijke overeenkomsten te vermijden en scans te versnellen.
Ontwerppatronen voor duidelijkheid en onderhoudbaarheid. Je zult jezelf dankbaar zijn als je maanden later de dashboards opnieuw bezoekt.
Regex testen in Looker Studio
Maak berekende velden en gebruik kleine voorbeeldtabellen om de resultaten te valideren voordat ze naar productiedashboards worden uitgerold. Controleer nulwaarden, randgevallen en meertalige invoer.
- Test elk REGEXP_EXTRACT of REGEXP_REPLACE met bekende goede en bekende slechte voorbeelden.
- Geef uw berekende velden een versie met duidelijke labels (bijvoorbeeld „v2-source-clean”).
- Documenteer patronen in je gegevenswoordenboek voor zichtbaarheid van het team.
Als uw marketingactiviteiten een bredere automatisering nodig hebben voor het opschonen en routeren van gegevens, dan is onze automatiseringsdiensten kan helpen om deze nauwkeurigheid in verschillende tools te integreren.
Regex is nuttig voor marketingdoeleinden
Regex is nuttig voor marketingdoeleinden omdat het structuur geeft aan rommelige gegevens, met name Looker Studio. Met een paar patronen kun je campagnes consistent groeperen, landingspagina's opschonen en ruis filteren, en dat allemaal zonder te exporteren naar Excel of aangepaste code te schrijven.
We gebruiken regex om UTM-taxonomieën in betaalde media en SEO op elkaar af te stemmen, inconsistente padnamen te corrigeren en dashboards te verrijken met berekende velden. Het resultaat: snellere inzichten en minder rapportageverrassingen.
Testen, debuggen en hulpmiddelen
Aanbevolen Regex-testers
Valideer je patroon voordat je het implementeert met een regex-tester. Populaire keuzes zijn onder meer regex101, RegExR en taalspecifieke speeltuinen. Met een goede regex-checker kun je vlaggen testen, matchgroepen bekijken en invoer met meerdere regels simuleren.
- Test met zowel typische als pathologische tekenreeksen.
- Bewaar testcases naast je patroon voor regressiecontroles.
- Controleer de compatibiliteit van de engine (PCRE versus JavaScript versus RE2 kan verschillen).
Als uw gegevens meertalig zijn of meerdere coderingen omvatten, moet u het gedrag en de normalisatieregels van Unicode bevestigen.
Test - Fase - Workflow implementeren
Behandel regex als productiecode. Een eenvoudig proces vermindert breuken en zorgt ervoor dat de dashboards nauwkeurig blijven.
- Eenheidstest: controleer het patroon tegen samengestelde armaturen en randbehuizingen.
- Fase: pas de regex toe op een gesamplede dataset of een niet-kritisch dashboard.
- Implementeer: implementeer stapsgewijs, bewaak statistieken en houd een rollback bij de hand.
Documenteer elk patroon: intentie, voorbeelden en bekende beperkingen. Dit bespaart tijd voor de volgende persoon die het aanraakt, vaak u binnen drie maanden.
Logging en dekking van Edge Cases
Matchpercentages in logboeken en nuluitvoer na implementatie. Als 30% van de rijen plotseling nulwaarden retourneert, is je regex te streng of is het upstream-formaat gewijzigd.
- Houd dekkingsstatistieken per veld bij: extractiesnelheid, aantal unieke waarden, foutenpercentages.
- Waarschuw voor pieken in 'onbekende' categorieën na de lancering van nieuwe campagnes.
- Wissel de steekproefcontroles wekelijks af om stille regressies op te vangen.
Als de formaten afwijken (nieuwe SKU-vormen, toegevoegde queryparameters), moet u uw patroon en tests samen bijwerken.
Motorverschillen en opmerkingen over de prestaties
PCRE, JavaScript, RE2 - Welke wijzigingen
Niet alle motoren ondersteunen dezelfde functies. PCRE is rijk aan functies; JavaScript is modern, maar mist nog enkele randgevallen; RE2 geeft prioriteit aan veiligheid en weigert constructies die kunnen ontploffen.
- Lookbehind: werkt in Python en modern JavaScript; niet ondersteund in RE2.
- Atoomgroepen en bezittelijke kwantoren: beschikbaar in PCRE/Java; meestal afwezig in JS/RE2.
- Benoemde groepen: ondersteund in Python en moderne JS; de syntaxis verschilt per engine.
Wanneer u bouwt voor analyses (vaak RE2) en webapps (JS), moet u zich richten op de kleinste gemene deler of motorspecifieke varianten behouden.
Valkuilen bij prestaties
Een catastrofale backtracking kan uw app of dashboard blokkeren. Het verschijnt wanneer geneste kwantoren dubbelzinnige patronen ontmoeten.
- Vermijd patronen zoals (.+) + of (.*) *.
- Gebruik atomaire groeperingen of bezittelijke kwantoren, indien beschikbaar; zet anders de tokens strakker.
- Veranker patronen en specificeer tekenklassen in plaats van . * waar mogelijk.
Meten. Miljoenen rijen opnemen? Benchmark voor representatieve gegevens en beperk de verwerkingstijd om te voorkomen dat middelen worden verbruikt.
Wanneer moet u in plaats daarvan parsers/tokenizers gebruiken
Regex is geen wondermiddel. Kies voor geneste of contextgevoelige structuren een parser of tokenizer.
- HTML/XML: gebruik een DOM-parser voor nauwkeurigheid en beveiliging.
- JSON/CSV: gebruik speciale parsers: schemabewust en robuust tot randgevallen.
- Complexe logboeken: combineer parseerbibliotheken met gerichte regex voor de laatste aanpassingen.
Gebruik regex waar het uitblinkt: platte patronen, voorspelbare grenzen en snelle matching. Stel parsers uit als structuur belangrijk is.
Beste praktijken en wanneer u Regex niet moet gebruiken
Patronen leesbaar maken
Leesbare regex presteert beter dan slimme regex in echte teams. Geef de voorkeur aan duidelijkheid en opmerkingen boven oneliners die alleen jij begrijpt.
- Groepen een naam geven: (? <sku>\\ d {6}) documenteert zichzelf.
- Breek complexe patronen op in kleinere, geteste stukken.
- Gebruik in engines die dit ondersteunen de uitgebreide modus met opmerkingen; zo niet, documenteer dan naast de code.
Voeg voorbeelden toe in de buurt van het patroon: „Komt overeen met: X, Y.” In de toekomst zul je dankbaar zijn.
Versiebeheer en opslag van patronen
Behandel patronen zoals code. Sla ze op in versiebeheer, voeg tests toe en tag releases.
- Centraliseer in een gedeelde opslagplaats of configuratiewinkel die toegankelijk is voor marketing en engineering.
- Houd een changelog bij waarin wordt uitgelegd waarom een patroon is gewijzigd (bijvoorbeeld „ondersteuning toegevoegd voor nieuwe UTM-leverancier”).
- Veilig afschrijven: v2 naast elkaar verzenden, uitgangen vergelijken en v1 dan buiten gebruik stellen.
Als u veel dashboards gebruikt, consolideer dan de gebruikelijke regex in één enkele bron van waarheid om te voorkomen dat u afdwaalt.
Beveiligingsoverwegingen en invoervalidatie
Regex kan bij misbruik risico's met zich meebrengen. Bescherm je systemen en gebruikers met een paar vangrails.
- ReDoS: voorkom catastrofale backtracking; handhaaf time-outs en limieten voor de invoerlengte.
- Onbetrouwbare invoer: vertrouw nooit alleen op regex voor beveiliging; valideer en reinig invoer met gelaagde controles.
- Ontsnappen: bij het interpoleren van gebruikersreeksen in patronen, moet u ze eerst vermijden om regex-injectie te voorkomen.
Combineer in webcontexten regex-filters met strikte toestemmingslijsten en controles aan de serverzijde. De verdediging in de diepte wint.
Werk samen met een Regex-slimme groeipartner (neem contact op met 6th Man)
Als u marketing wilt die snel verloopt en rapporten die u kunt vertrouwen, dan zijn wij uw team. Bij 6th Man gebruiken we dagelijks regex om gegevens op te schonen, tracking te verenigen en dashboards te maken die leiders daadwerkelijk gebruiken. We sluiten snel aan, werken samen met uw team en richten ons op resultaten, niet op pluisjes.
- Bekijk hoe we rapportages maken die beslissingen stimuleren: SEO-dashboards met Looker Studio.
- Ontdek onze bredere mogelijkheden op het gebied van zoeken en prestaties: digitale marketingdiensten en SEO- en SEA-diensten.
- Bekijk de impact in de echte wereld: bekijk onze casestudies.
Klaar om je data schoner te maken en je groei sneller te maken? Laten we het hebben over je stack, je doelen en hoe we kunnen helpen. Begin het gesprek hier: neem contact op met 6th Man.



.jpg)