Regular expressions
Reguliere expressie
Een reguliere expressie (uit het Engels, regular expression, afgekort tot “regexp”, “regex” of RE) is een manier
==om tekstpatronen te beschrijven== waardoor men softwarematig tekst kan herkennen.
Er bestaat hiervoor een formele syntaxis, die echter slechts gedeeltelijk is gestandaardiseerd.
De precieze syntaxis varieert enigszins tussen de verschillende programma’s.
Reguliere expressies worden in teksteditors gebruikt om stukken tekst te doorzoeken of te veranderen.
in andere programma’s worden ze gebruikt om te controleren of bepaalde patronen voorkomen.
Veel programmeertalen ondersteunen reguliere expressies voor tekstmanipulatie.
Sommige, zoals Perl en JavaScript, hebben deze in hun syntaxis ingebouwd.
Reguliere expressies zijn bekend geworden door hulpprogramma’s van het besturingssysteem Unix als sed en grep.
Een eenvoudige variant van de reguliere expressie zijn de wildcards die gebruikt worden bij het zoeken naar bestandsnamen.
protocol / syntax
Een reguliere expressie omschrijft een verzameling tekenreeksen zonder ze alle afzonderlijk op te noemen.
De drie strings Handel, Händel en Haendel kunnen beschreven worden met het patroon “H(a|ä|ae)ndel”.
“Gewone” letters en cijfers in de reguliere expressie geven hetzelfde teken weer / hebben dezelfde betekenis.
Enkele tekens hebben een speciale betekenis:
- Een punt (.) staat voor een willekeurig teken, behalve het teken voor een newline (\n)
- Vierkante haken geven een lijst van mogelijke tekens: [abc]
- binnen vierkante haken staat een minteken voor een reeks:
[a-zA-Z] is het patroon waarmee alle letters “gevangen” worden.
- een dakje als eerste teken binnen de vierkante haken verandert de tekenverzameling in het omgekeerde :
[^0-9] herkent alles wat geen cijfer is.
- Een dakje ^ staat voor het begin van de regel.
- Een dollarteken $ staat voor het eind van de regel.
Deze basiselementen kunnen worden gecombineerd met de volgende constructies:
- keuze
Een verticale balk scheidt alternatieven, bijvoorbeeld “groen|rood” vangt “groen” of “rood” op.
- kwantificatie
Een kwantor achter een teken geeft aan hoe vaak dat teken voor mag komen.
De meest voorkomende kwantoren zijn :
- Een plusteken +
geeft aan dat het voorafgaande teken of patroon ten minste één keer moet voorkomen (dus 1 of meerdere maal)
bijvoorbeeld “goo+gle” herkent google, gooogle, goooogle, enz.
- Een vraagteken ?
geeft aan dat het voorafgaande teken of patroon ten hoogste één keer mag voorkomen (dus 1 of nul keer)
“De Bruij?n” herkent “De Bruin” en “De Bruijn”
- Een sterretje *
geeft aan dat het voorafgaande teken nul of meer keer mag voorkomen,
bijvoorbeeld “042” herkent 42, 042, 0042, enzovoort.
Een veelvoorkomende constructie is . hetgeen alle tekst vindt.
- groepering
Haakjes maken een eenheid van het patroon waar ze omheen staan
hierop kunnen andere operatoren worden toegepast
bijvoorbeeld “(va|moe)der” is hetzelfde als “vader|moeder” en “(groot)?vader” herkent zowel “vader” als “grootvader”.
Deze constructies kunnen worden gecombineerd in hetzelfde patroon, zodat “H(ae?|ä)ndel” hetzelfde is als “H(a|ae|ä)ndel”.