# Nog meer voorbeelden

Even terugkijken.....wat hebben we tot nu toe gedaan.

Tot nu toe hebben we teksten gevalideerd. We hebben gekeken of een string voldoet aan een bepaald patroon.

We hebben bijvoorbeeld bepaald of een getal een valide 06-nummer is, hiervoor gebruikte we de expressie:

<table border="1" id="bkmrk-%5E06%5Cd%7B8%7D%24-begin-met-" style="border-collapse: collapse; width: 98.3321%; height: 28px;"><tbody><tr style="height: 28px;"><td style="width: 19.8516%; height: 28px;">^06\\d{8}$</td><td style="width: 80.0868%; height: 28px;">begin met 06 en dan precies 8 decimalen de d staat voor decimalen en {8} staat voor 8 posities</td></tr></tbody></table>

We hebben verder bepaald of een string een hex getal is met de reguliere expressie:

<table border="1" id="bkmrk-%5E%5B0-9a-f%5D%2B%24-begin-me" style="border-collapse: collapse; width: 98.3321%;"><tbody><tr><td style="width: 19.6947%;">^\[0-9A-F\]+$</td><td style="width: 80.2437%;">begin met een 0,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F en herhaal dat 1 of meer keren tot het eind.</td></tr></tbody></table>

Als we willen weten of er ergens in de tekst een 06-nummer staat dan kunnen we de ^ en $ weglaten. Er wordt dan niet meer van het begin naar het einde gezocht, maar gekeken of er ergens een rij karakters is dat voldoet aan de expressie.

In de laatste reguliere expressie zie je een plus. In reguliere expressies hebben de symbolen `?`, `+` en `*` verschillende betekenissen en worden ze gebruikt om het aantal herhalingen van een patroon in de tekst te bepalen.

<table border="1" id="bkmrk-teken-betekenis-voor" style="border-collapse: collapse; width: 98.3321%; height: 84px;"><thead><tr><td style="width: 8.20029%; background-color: #c2e0f4;">Teken</td><td style="width: 52.8277%; background-color: #c2e0f4;">Betekenis</td><td style="width: 13.9258%; background-color: #c2e0f4;">Voorbeeld</td><td style="width: 24.9846%; background-color: #c2e0f4;">  
</td></tr></thead><tbody><tr style="height: 28px;"><td style="width: 8.20029%; height: 28px;">  
</td><td style="width: 52.8277%; height: 28px;">als je niets plaats dan moet het element 1x voorkomen.</td><td style="width: 13.9258%; height: 28px;">A</td><td style="width: 24.9846%; height: 28px;">Alleen A voldoet</td></tr><tr style="height: 28px;"><td style="width: 8.20029%; height: 28px;">+</td><td style="width: 52.8277%; height: 28px;">een plus betekent 1 of meer keren</td><td style="width: 13.9258%; height: 28px;">AB+</td><td style="width: 24.9846%; height: 28px;">AB en ABBB voldoen</td></tr><tr style="height: 28px;"><td style="width: 8.20029%; height: 28px;">\*</td><td style="width: 52.8277%; height: 28px;">een \* betekent 0, 1 of meer keren</td><td style="width: 13.9258%; height: 28px;">AB\*C</td><td style="width: 24.9846%; height: 28px;">AC en ABC of ABBBC voldoen</td></tr><tr><td style="width: 8.20029%;">?</td><td style="width: 52.8277%;">een ? betekent 0 of 1 keer</td><td style="width: 13.9258%;">AB?C</td><td style="width: 24.9846%;">AC en ABC voldoen</td></tr></tbody></table>

Voor het teken kan des een teken staan of een groep tekens, je kunt ook een . Gebruiken.

<table border="1" id="bkmrk-abc%2B-a-komt-1-keer-v" style="border-collapse: collapse; width: 98.3321%;"><tbody><tr><td style="width: 8.51401%;">ABC+</td><td style="width: 52.5925%;">A komt 1 keer voor dan een B en dan één of meer keren een C. *ABCCC* is dus goed, *AABC* niet.</td></tr><tr><td style="width: 8.51401%;">\[A-C\]+</td><td style="width: 52.5925%;">A,B of C komen 1 of meer keren voor. *ABCAABBAA* is dus goed en A ook.</td></tr><tr><td style="width: 8.51401%;">\[A-C\]{5,6}</td><td style="width: 52.5925%;">A,B, of C en dat minimaal 5 en maximaal 6 keer. *CBBCBA* is dus goed, maar *CBBCBAC* niet omdat dat een karakter te veel is.</td></tr><tr><td style="width: 8.51401%;">.\*</td><td style="width: 52.5925%;">Elk karakter (any) komt 0 of meer keren voor (alles matched dus).</td></tr></tbody></table>

En dan kun je nog ^ of $ gebruiken.

<table border="1" id="bkmrk-expressie-uitleg-voo" style="border-collapse: collapse; width: 98.3321%; height: 140px;"><tbody><tr style="height: 28px;"><td style="width: 14.9104%; background-color: #c2e0f4; height: 28px;">Expressie</td><td style="width: 49.6513%; background-color: #c2e0f4; height: 28px;">Uitleg</td><td style="width: 35.3767%; background-color: #c2e0f4; height: 28px;">Voorbeeld van een match</td></tr><tr style="height: 28px;"><td style="width: 14.9104%; height: 28px;">^ABC</td><td style="width: 49.6513%; height: 28px;">De tekst begint met ABC, daarna mag alles</td><td style="width: 35.3767%; height: 28px;">ABC zijn de beginletters van het alfabet.</td></tr><tr style="height: 28px;"><td style="width: 14.9104%; height: 28px;">^AB\*C</td><td style="width: 49.6513%; height: 28px;">De tekst begint met een A dan 0,1, of meer B's en dan een C, daarna mag alles</td><td style="width: 35.3767%; height: 28px;">AC wordt gebruikt als afkorting voor airconditioner</td></tr><tr style="height: 28px;"><td style="width: 14.9104%; height: 28px;">^A\*B\*</td><td style="width: 49.6513%; height: 28px;">De tekst mag alleen 0,1 of meer A;s bevatten gevolgd door 0,1 of meer B's.</td><td style="width: 35.3767%; height: 28px;">BB staat for bed &amp; breakfast</td></tr><tr style="height: 28px;"><td style="width: 14.9104%; height: 28px;">^\[A-Z\]+$</td><td style="width: 49.6513%; height: 28px;">De tekst bestaat alleen uit hoofdletters en er moet er minimaal één voorkomen.</td><td style="width: 35.3767%; height: 28px;">KIJK UIT</td></tr></tbody></table>

De validatie in python doe je met het commando:

```python
re.match(expressie, text)
```

### Opdracht

Jij krijgt nu een tabel met een expressie. De kolom uitleg en match is leeg. Jij moet die kolommen vullen. Leg uit wat de expressie doet en bepaal of de tekst een match is. Probeer de expressie uit met de code van de vorige opgave.

<table border="1" id="bkmrk-expressie-tekst-matc" style="border-collapse: collapse; width: 103.58%; height: 305px;"><tbody><tr style="height: 26px;"><th style="width: 23.9703%; height: 26px;">Expressie</th><th style="width: 32.743%; height: 26px;">Tekst</th><th style="width: 7.41351%; height: 26px;">Match?</th><th style="width: 35.832%; height: 26px;">Uitleg in eigen woorden (waarom wel of geen match)</th></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'\[0-9\]+^'</span></td><td style="width: 32.743%; height: 28px;">Mijn nummer is: 06 - 1234 1234</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'\[0-9\]{8,10}^'  
</span></td><td style="width: 32.743%; height: 28px;">Mijn nummer is: 06 - 1234 1234</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'$\[A-Z\]+'</span></td><td style="width: 32.743%; height: 28px;">Mijn nummer is: 06 - 1234 1234</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 27px;"><td style="width: 23.9703%; height: 27px;"><span style="font-size: 10pt;">expressie= r'max'</span></td><td style="width: 32.743%; height: 27px;">Maximale temperatuur is 12 graden</td><td style="width: 7.41351%; height: 27px;">  
</td><td style="width: 35.832%; height: 27px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'\[max\]'</span></td><td style="width: 32.743%; height: 28px;">x-men</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'\[k-mK-M\]'</span></td><td style="width: 32.743%; height: 28px;">Dit is een voorbeeld</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'$\[k-mK-M\]'</span></td><td style="width: 32.743%; height: 28px;">Matig je alcohol gebruik!</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'$\[k-mK-M\]'</span></td><td style="width: 32.743%; height: 28px;">Gaat de KLM failliet?</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'^\[a-kA-K\]+$'</span></td><td style="width: 32.743%; height: 28px;">De kakkerlak kakt</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr><tr style="height: 28px;"><td style="width: 23.9703%; height: 28px;"><span style="font-size: 10pt;">expressie= r'$\[k-mK-M\]$'</span></td><td style="width: 32.743%; height: 28px;">De kakkerlak kakt erg veel</td><td style="width: 7.41351%; height: 28px;">  
</td><td style="width: 35.832%; height: 28px;"><span style="font-size: 10pt;"> </span></td></tr></tbody></table>

Test alle reguliere expressies en zet in de kolom match of het voorbeeld een matched met de reguliere expressie.

Gebruik de code van de vorige opdracht om je antwoorden te controleren.

### Inleveren

1. PDF met jouw naam en de tabel waarin je in de laatste kolom met *true* of *false* (wel of geen match) aangeeft en daarachter een uitleg geeft.
2. De code waarmee je de voorbeelden hebt gecontroleerd.

\--