Corso di Raku / Espressioni regolari e grammatiche / Espressioni regolari / Catture
Catture posizionali
Metti una parte dello schema fra parentesi tonde ( ) per
catturarla. Dopo una corrispondenza riuscita, ogni pezzo
catturato è disponibile come $0, $1 e così
via, numerato da zero nell’ordine in cui si aprono le parentesi:
if '2025-06' ~~ / (\d+) '-' (\d+) / {
say $0; # 「2025」
say $1; # 「06」
}La prima coppia di parentesi ha catturato l’anno in $0,
la seconda ha catturato il mese in $1. Il testo fra di esse
— il - letterale — viene riconosciuto ma non catturato.
Ogni cattura è a sua volta un piccolo oggetto match, quindi puoi
chiederle il suo .Str, la sua posizione e così via. In una
stringa fra virgolette doppie una cattura si interpola come il testo che
ha riconosciuto:
if 'hello world' ~~ / (\w+) ' ' (\w+) / {
say "$1 $0"; # world hello
}Qui le due parole catturate vengono stampate nell’ordine opposto, il che le scambia.
Le catture sono conservate anche nella variabile di match
$/, e $0 è in realtà un modo breve di scrivere
$/[0]. Puoi lavorare direttamente attraverso
$/:
if '2025-06' ~~ / (\d+) '-' (\d+) / {
say $/[0]; # 「2025」
say $/[1]; # 「06」
say $/.elems; # 2
}$/ è l’intero oggetto match, indicizzarlo raggiunge le
catture posizionali, e .elems ti dice quante ce ne
sono.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Catture | Quiz — Catture posizionali →
💪 Oppure vai direttamente agli esercizi di questa
sezione.