Operatori di ripetizione dei caratteri nelle espressioni regolari
Ci sono situazioni in cui vogliamo indicare
che un carattere si ripete un numero specifico di
volte. Se conosciamo il numero esatto di ripetizioni,
possiamo semplicemente scriverlo più volte
- /aaaa/. Ma cosa fare se vogliamo
dire: ripeti una o più volte?
Per questo esistono operatori (quantificatori)
di ripetizione: il più + (una o più volte),
l'asterisco * (zero o più volte) e
il punto interrogativo ? (zero o una volta). Questi
operatori agiscono sul carattere che
li precede.
Osserviamo il funzionamento di questi operatori con degli esempi.
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' una o più
volte, lettera 'x':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'xx ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' zero o più
volte, lettera 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' zero o una
volta, lettera 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! xaax xbx'
Problemi pratici
Data la stringa:
let str = 'aa aba abba abbba abca abea';
Scrivi un'espressione regolare che trovi le stringhe
'aba', 'abba', 'abbba'
secondo il modello: lettera 'a', lettera 'b'
un numero qualsiasi di volte, lettera 'a'.
Data la stringa:
let str = 'aa aba abba abbba abca abea';
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba', 'abba',
'abbba' secondo il modello: lettera 'a',
lettera 'b' un numero qualsiasi di volte (incluso
zero volte), lettera 'a'.
Data la stringa:
let str = 'aa aba abba abbba abca abea';
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba' secondo il modello: lettera
'a', lettera 'b' una volta o
zero, lettera 'a'.
Data la stringa:
let str = 'aa aba abba abbba abca abea';
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba', 'abba',
'abbba', senza catturare 'abca'
e 'abea'.