Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Kwantoren / Exercises / Twee tot vier cijfers
Oplossing: Twee tot vier cijfers
Hier is een mogelijke oplossing voor de taak.
Code
say 'abc12345' ~~ / \d ** 2..4 /;🦋 Je kunt de broncode vinden in het bestand two-to-four-digits.raku.
Uitvoer
「1234」Opmerkingen
\d ** 2..4matcht tussen de twee en vier cijfers achter elkaar.De string heeft vijf cijfers beschikbaar, maar het bereik legt de match op vier vast, dus neemt het patroon
1234en laat het de afsluitende5liggen. Gulzig als het is, neemt het het maximum dat het bereik toestaat in plaats van het minimum.Gulzigheid geldt alleen binnen één match — de engine stopt nog steeds op de eerste plek waar het patroon slaagt. Zelfs als er later in de string een langere reeks cijfers staat, wordt die nooit bereikt:
say 'abc123def6789012z' ~~ / \d ** 2..4 /; # 「123」
Hier wordt
123gematcht, hoewel de latere reeks6789012het hele bereik met6789gevuld zou hebben. De meest linkse match wint.