Reguliere expressies

Reguliere expressies, meestal aangeduid met de engelse term regular expressions, vormen een belangrijk begrip in de Unix wereld. Regular expressions zijn compacte beschrijvingen van eenvoudige of complexe patronen in tekstbestanden. Veel tools die bewerkingen kunnen uitvoeren op tekstbestanden kunnen overweg met regular experssions. Het kunnen werken met regular expressions maakt de inzet van deze tools veel nuttiger en de mogelijkheden krachtiger. Het gaat hier om tools als grep, awk, sed, maar ook talen als perl en python of editors als vi en emacs.

Voorbeelden van regular expressions

We zullen een aantal voorbeelden bekijken om wat aan het begrip te wennen. Daarna zullen we een meer formele beschrijving geven. Een reglar expression beschrijft dus op compacte wijze een patroon in tekst. We zeggen dat de expression matched met een onderdeel van een tekst. Hier een eenvoudig voorbeeld: stel we hebben de tekst:

Er zat een aapje op een stokje.

Een eenvoudige regular expression kan gewoon een woord zijn. Zo zal de regular expression zat matchen met het woordje zat in de gegeven tekst. Een meer complexe expression is [A-Z]r Deze expressie matched met alle tweeletterpatronen die beginnen met een hoofdletter en eindigen met de letter r. In ons voorbeeld is dat het woordje Er. Tussen de vierkante haken staat dus een range, waarvan de A het begin en de Z het einde is. Het streepje staat voor alle tussenliggende tekens. We kunnen tussen vierkante haken ook bijvoorbeeld alleen de letters A, E en I zetten. Dit ziet eruit als [AEI]ls. Dit matchet dus drieletterige wooren die beginnen met de hoofdletter A of E of I en vervolgens een l en een s hebben. De vierkante haken hebben dus een speciale betekenis in regualr expressions. Soms willen we echter de vierkante haak zelf in de regular expression hebben. Dit kunnen we bereiken door er een backslash voor te zetten. Deze backslash haalt de bijzondere betekenis van een symbool weg. De backslash is dus zelf ook zo'n bijzonder symbool.
Veel tools passen de regular expression als zoekcriterium toe en kunnen dan op het gevondene of een deel daarvan een bewerking uitvoeren.

Formele beschrijving van regular expressions

De bijzindere symbolen ook wel metacharacters genaamd zijn:

\ ^ $ . [ ] | ( ) * + ?

Een basis regular expression is een van de volgende dingen:

De basisexpressies zijn te combineren en van operatoren te voorzien.

Voorbeelden van regular expressions

^[0-9]+$ matched alle regels bestaande uit enkel cijfers
^[a-z].*$ matched alle regels beginnend met een kleine letter
^$ matched alle lege regels
[A-Z][a-z]*p matched alle woorden beginnend met een hoofdletter gevolgd door nul of meer kleine letters en eindigend op de letter p. De basisexpressies zijn te combineren en van operatoren te voorzien.

Voorbeelden van regular expressions

^[0-9]+$ matched alle regels bestaande uit enkel cijfers
^[a-z].*$ matched alle regels beginnend met een kleine letter
^$ matched alle lege regels
[A-Z][a-z]*p matched alle woorden beginnend met een hoofdletter gevolgd door nul of meer kleine letters en eindigend op de letter p.

Opgaven

  1. geef een regular expression die matched met de volgende msdos filenamen COMMAND.COM CONFIG.SYS AUTOEXEC.BAT
  2. geef een voorbeeld van een string die matched met de regular expression \\\*[5-9]?
  3. geef een regular expression die matched met regels van vier tekens waarvan de derde een R is.
  4. geef een regular expression die matched met e-mail adressen van de vorm l.vanmoergestel@hvu.nl leovm@chello.nl LEOVM@CHELLO.NL lvanmoergestel@fnt.hvu.nl

Aangemaakt 31 augustus 2004
Laatst bijgewerkt januari 2016