Een reguliere expressie (uit het Engels, regular expression, afgekort tot “regexp”, “regex” of RE) is een manier om patronen te beschrijven waardoor een computer softwarematig tekst kan herkennen. Er bestaat hiervoor een formele syntaxis, die deels is gestandaardiseerd.
Reguliere expressies worden bijvoorbeeld in teksteditors gebruikt om stukken tekst te doorzoeken of te veranderen; in andere programma's worden ze gebruikt om te controleren dat bepaalde patronen voorkomen. Veel programmeertalen ondersteunen reguliere expressies voor tekstmanipulatie. Sommige, zoals Perl en JavaScript, hebben ze zelfs 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 is in veel besturingssystemen te vinden als de jokertekens die gebruikt kunnen worden bij het zoeken naar bestandsnamen.
Een reguliere expressie omschrijft een verzameling tekenreeksen (strings) zonder ze alle afzonderlijk op te noemen. De drie strings Handel, Händel en Haendel kunnen bijvoorbeeld beschreven worden met het patroon “H(a|ä|ae)ndel”.
Gewone letters en cijfers in de reguliere expressie herkennen hetzelfde teken in de te vinden tekenreeks. Enkele tekens hebben een speciale betekenis:
Deze basiselementen kunnen worden gecombineerd met de volgende constructies:
Deze constructies kunnen worden gecombineerd in hetzelfde patroon, zodat “H(ae?|ä)ndel” hetzelfde is als “H(a|ae|ä)ndel”.
De precieze syntaxis varieert enigszins tussen de verschillende programma’s, maar meestal worden de bovenstaande gebruikt.
De reguliere expressies komen voort uit de wiskundige logica, om precies te zijn, de theorie van de formele talen. Ze zijn uitgevonden door de Amerikaanse wiskundige Stephen Cole Kleene als methode om reguliere talen te beschrijven.
De verzameling reguliere expressies over een alfabet (verzameling symbolen) wordt als volgt inductief gedefinieerd:
De taal die beschreven wordt door een reguliere expressie (de verzameling strings die “herkend” worden door een patroon) wordt ook inductief gedefinieerd:
De kwantoren ? en + kunnen als volgt gedefinieerd worden om hun gebruikelijke gedrag te veroorzaken:
De talen die door reguliere expressies kunnen worden omschreven komen overeen met de reguliere talen.