Modulelessen (3/4)
Het jokerteken: de punt `.`
De punt . in regex is het wildcard: het komt overeen met een enkele
teken\u2026 met één belangrijke uitzondering: het komt NIET overeen met de
nieuwe regel (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^Drie letters: een c, een willekeurig teken, een t. Geen nieuwe regel ertussen, dus c\nt
komt niet overeen (standaard).
De punt is uiterst nuttig, maar ook gevaarlijk: gebruikt zonder discipline
vangt meer op dan je bedoelde. Gecombineerd met de kwantoren in module 2
(.*, .+?) het is de bron van 90% van de patronen die "niet werken zoals ik
verwacht".
De s vlag: "dotAll"
Met de vlag s (ook wel dotAll of single-line genoemd) komt de punt overeen
elk teken, inclusief nieuwe regel. Handig om blokken te extraheren die overspannen
meerdere lijnen.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^Limieten en gedrag van het puntjokerteken
De punt . is een krachtig jokerteken, maar komt standaard niet overeen met nieuweregeltekens (\\n). Als je wilt dat de punt absoluut met alles overeenkomt, inclusief nieuwe regels, moet je de vlag s (dotAll) inschakelen. Wees voorzichtig bij het combineren van de punt met kwantoren (.*), omdat deze de neiging heeft te veel tekst te verbruiken (hebzuchtig gedrag).
Probeer het
Zoek elk drietal tekens, gescheiden door haakjes, b.v. `(abc)`, `(xyz)`. Gebruik het jokerteken voor de 3 binnenste tekens.
Toon hint
Drie punten voor drie willekeurige tekens. De haakjes zijn metatekens: ze moeten worden geëscaped met \\.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Extraheer het blok tussen `[INIZIO]` en `[FINE]`, dat meerdere regels kan bestrijken. Je hebt de vlag `s` nodig, zodat de punt ook overeenkomt met nieuwe regels, en de 'luie' versie van de kwantor (`.*?`, module 2).
Toon hint
Zonder de s-vlag stopt de punt aan het einde van de regel: voeg deze toe. Het formulier .*? (lui) stopt de wedstrijd bij de eerste [FINE].
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).
Toon hint
Het patroon gebruikt de punt '.' om het middelste jokerteken weer te geven.
Oplossing beschikbaar na 3 pogingen