
Inhoudsopgave
Deze Appendix bevat een beknopte maar hopelijk voldoende en dekkende introductie tot de wereld van reguliere expressies. Het documenteert reguliere expressies in de vorm beschikbaar in KatePart, wat niet compatibel is met de reguliere expressies van perl, noch met die van bijvoorbeeld grep.
Reguliere expressies bieden ons een manier om mogelijke inhoud van een tekenreeks te beschrijven zodat deze verstaan wordt door een klein stukje software, waarmee het kan nagaan of een tekst overeenkomt en ook in het geval van geavanceerde toepassingen met de middelen om stukjes overeenkomende tekst op te slaan.
Een voorbeeld: Zeg dat u naar een tekst in paragrafen wilt zoeken die begint met ofwel de namen “Hendrik” of “Piet” gevolgd door een werkwoordsvorm “zegt”.
Met een normale zoekopdracht, zou u beginnen met te zoeken naar de eerste naam, “Hendrik” misschien gevolgd door “ze” zoals dit: Hendrik ze
en, terwijl u zoekt naar overeenkomsten, moet u diegene negeren die niet het begin van een paragraaf zijn, evenals die waarin het woord beginnend met de letters “ze” niet ofwel “zegt”, “zei” of zoiets is. En dan natuurlijk dat alles herhalen met de volgende naam...
Met reguliere expressies kan die taak worden gedaan met een enkele zoekopdracht en met een grotere graad van precisie.
Om dit te bereiken definieert Reguliere Expressies regels voor het uitdrukken van details op een generaliserende manier van een overeenkomst met een tekenreeks. Ons voorbeeld, die we letterlijk als volgt uitdrukken: “Een regel beginnend met ofwel ‘Hendrik’ of ‘Piet’ (mogelijk gevolgd door tot 4 spaties of een tab) gevolgd door een witruimte gevolgd door ‘ze’ en dan ofwel ‘gt’ of ‘i’” kan worden uitgedrukt met de volgende reguliere expressie:
^[ \t]{0,4}(Hendrik|Piet) ze(gt|i)
Het bovenstaande voorbeeld demonstreert alle vier belangrijkste concepten van moderne reguliere expressies namelijk:
Patronen
Toekenningen
Aantallen
Achterwaartse verwijzingen
Het dakje (^
) waarmee de uitdrukking begint is een toekenning, die alleen waar is als de volgende overeenkomende tekenreeks zich aan het begin van de regel bevindt.
De tekenreeksen [ \t]
en (Hendrik|Piet) ze(gt|i)
zijn patronen. De eerste is een tekenklasse die ofwel overeenkomt met een spatie of een teken (horizontale) tab; het andere patroon bevat eerst een subpatroonn overeenkomend met ofwel Hendrik
of Piet
, daarna iets wat exact overeenkomt met de tekenreeks ze
en tenslotte een subpatroon overeenkomend met ofwel gt
of e
De tekenreeks {0,4}
is een aantal dat aangeeft “ergens van 0 t/m 4 van de vorige”.
Omdat software voor reguliere expressies, die het concept van achterwaartse verwijzingen ondersteunt, het gehele deel van de tekenreeks, dat overeenkomt, evenals subpatronen tussen haakjes, opslaat, geeft dus ook toegang tot die verwijzingen, zodat we onze handen kunnen leggen op ofwel de gehele overeenkomst (bij het zoeken in een tekstdocument in een tekstbewerker met een reguliere expressie, die vaak gemarkeerd is als geselecteerd) of ofwel de gevonden naam of het laatste deel van de zin.
Samenvattend zal de uitdrukking overeenkomen met wat we willen waarmee deze moet overeenkomen en alleen daarmee.
De volgende secties zullen in detail beschrijven hoe patronen, tekenklassen, toekenningen, aantallen en achterwaartse verwijzingen, te construeren en te gebruiken en de laatste sectie zal een paar bruikbare voorbeelden geven.