Regular expressions

Regular expressions - superkrachtig, maar niet eenvoudig

Regular expressions zijn formules om antwoord-alternatieven in compacte vorm in te voeren.
Je kunt werken met 'jokers', 'wildcards' of 'masks'. Dit maakt het mogelijk dat niet ieder antwoord bij een enkel afwijkend karakter wordt afgekeurd.

Teach2000 biedt ondersteuning voor regular expressions. Voor wie het snapt, het antwoord op alle vragen.

Toch zijn niet alle regular expressions complex. Een paar voorbeelden.

Het Engelse 'colour' kan ook worden geschreven als 'color'. Het is mogelijk dit antwoord-alternatief op te nemen, maar het kan ook worden geregeld met een 'regular expression'.
Deze expression begint met een dakje en eindigt met een dollarteken:

^colou{0,1}r$

Let op! Een regular expression wordt door Teach herkend aan het dakje ^ vooraf en een dollarteken $ als afsluiter.

Tussen accolades staat hoevaak het karakter daarvoor mag voorkomen. De 'u' mag 0 of 1 keer voorkomen. Goed zijn dus 'color' en 'colour'.

Een ander voorbeeld:

^gr[ae]y$

Tussen blokhaken staan de mogelijke letters dit ingevuld mogen worden: gray of grey.

Of andere logica:

^I like (green|yellow|purple|red)$

De '|' staat voor 'of'. Het juiste antwoord is dan 'I like green', of 'I like yellow' etc.

En jokers kan handig zijn:

^test.*$

Hiermee wordt gezegd dat 'test' goed is, maar ook 'tester', testen, testtesttest etc. Op de plaats van een punt kan ieder willekeurig teken worden ingevuld.

Een feature request voor dit programma was het volgende:

cry = huilen (om)

Is het mogelijk om in deze situatie 'huilen', 'huilen om' en 'huilen (om)' goed te rekenen?

Naast de overhoor controle-instelling 'Tekst tussen haakjes negeren' is dit met regular expressions op te lossen:

^huilen( (\(om\)|om)){0,1}$

Geen eenvoudige formule, dat klopt. Maar we kunnen hem ontleden:

Het voorvoegsel 'huilen' is altijd nodig. Het deel erna optioneel (0 of 1 keer). De '|' betekent óf ' om', óf ' (om)'.
Omdat we haakjes gebruiken die geen deel uitmaken van de regular expression moeten deze aangemerkt worden met een backslash (\).

^-?(\d+)((.|,)?(\d{1,5}))?$

Hierboven een RE die een getal valideert. Een cijfer kan worden aangeduid met een \d. Hier een cijfer met maximaal 5 decimalen.
Er kan een punt of een komma als decimaalscheidingsteken gebruikt worden, maar als er een decimaalscheidingsteken is, moet er ook minimaal een getal achter staan.

De + betekent dat er 1 of meer getallen mogen voorkomen.
Het vraagteken is een andere notatie voor {0,1}: voorgaande = optioneel.

Meer info op Wikipedia - https://nl.wikipedia.org/wiki/Reguliere_expressie