Corso di Raku / Espressioni regolari e grammatiche / Espressioni regolari / Avverbi

Matching globale

Per impostazione predefinita un regex trova solo la prima corrispondenza. L’avverbio :g (abbreviazione di :global) trova ogni corrispondenza nella stringa. Si scrive sull’operatore m///:

my @all = 'a1b2c3' ~~ m:g/\d/;
say @all;       # [「1」 「2」 「3」]
say @all.elems; # 3

Con :g il risultato si comporta come un elenco di oggetti match — uno per ogni punto in cui lo schema è stato trovato. Puoi contarli, scorrerli o trasformare ciascuno in una stringa:

my @numbers = 'a12 b3 c456' ~~ m:g/\d+/;
say @numbers.map(*.Str).join(', '); # 12, 3, 456

Qui \d+ ha riconosciuto tre sequenze distinte di cifre, e :g le ha raccolte tutte.

Il riconoscimento globale è lo strumento naturale ogni volta che la domanda è «quanti…» o «tutti i…» invece di «c’è un…».

Ambito degli avverbi   |   Spazi significativi


💪 Oppure vai direttamente agli esercizi di questa sezione.