Corso di Raku / Espressioni regolari e grammatiche / Espressioni regolari / Riconoscere le stringhe
L’oggetto match
Quando un regex corrisponde, lo smartmatch restituisce un oggetto
match. Lo stesso oggetto viene conservato automaticamente anche
nella variabile speciale $/, che a volte si chiama «la
variabile di match».
L’oggetto match è molto più di una risposta sì-o-no. Come stringa è
il testo che ha corrisposto — o con il metodo .Str o con il
prefisso ~, che è l’operatore di conversione a stringa e fa
esattamente la stessa cosa:
my $m = 'concatenate' ~~ /cat/;
say $m.Str; # cat
say ~$m; # catSa anche dove nella stringa la corrispondenza è
stata trovata. Il metodo .from dà la posizione in cui
comincia e .to la posizione subito dopo la sua fine:
my $m = 'room 7 left' ~~ /\d/;
say $m.Str; # 7
say $m.from; # 5
say $m.to; # 6Le posizioni si contano da zero, quindi la cifra 7 sta
all’indice 5.
Quando il regex non corrisponde, il risultato non è
affatto un oggetto match: è il valore speciale Nil.
Assegnare Nil a uno scalare lo lascia non definito:
my $m = 'abc' ~~ /z/;
say $m.defined; # FalseQuindi puoi sempre controllare .defined (o semplicemente
usare il valore in contesto booleano) prima di leggere il testo
corrispondente.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Quiz — Smartmatch | Quiz — Matching →
💪 Oppure vai direttamente agli esercizi di questa
sezione.