Corso di Raku / Espressioni regolari e grammatiche / Espressioni regolari / Asserzioni di contesto / Exercises / Fra parentesi
Soluzione: Fra parentesi
Ecco una possibile soluzione del compito.
Codice
say '$50' ~~ / <?after '$'> \d+ >> <!before '.'> /;🦋 Trova il programma nel file whole-dollar.raku.
Output
「50」Commenti
<?after '$'>è un lookbehind positivo — richiede un$subito prima del numero — e<!before '.'>è un lookahead negativo — richiede che non segua un.. Né il$né i dintorni entrano a far parte della corrispondenza, quindi il risultato è solo50.Il
>>è un confine di parola che segna la fine del numero. Senza di esso il goloso\d+potrebbe tornare sui suoi passi: su$39.99rinuncerebbe al9e riconoscerebbe3(che non è seguito da.).>>costringe a prendere tutto il numero, così$3.99e$39.99correttamente non corrispondono a nulla.Questo è un caso in cui un lookahead si guadagna il pane: non puoi esprimere «non seguito da un punto decimale» con un gruppo di cattura ordinario, perché lì non c’è nulla da catturare — solo una condizione da controllare.
Navigazione del corso
← Fra parentesi | Avverbi →