Operatori di ripetizione dei caratteri nelle regex
Ci sono situazioni in cui è necessario specificare che
un carattere si ripete un determinato numero di
volte. Se il numero esatto di ripetizioni è sconosciuto,
si può semplicemente scriverlo più volte
- 'aaaa'. Ma cosa fare se bisogna
dire questo: ripetere 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 alcuni esempi.
Esempio
Troviamo tutte le sottostringhe secondo il pattern lettera
'x', lettera 'a' una o più
volte, lettera 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'xx ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il pattern lettera
'x', lettera 'a' zero o più
volte, lettera 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il pattern lettera
'x', lettera 'a' zero o una
volta, lettera 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! xaax xbx'
Problemi pratici
Data una stringa:
txt = 'aa aba abba abbba abca abea'
Scrivi un'espressione regolare che trovi le stringhe
'aba', 'abba', 'abbba'
secondo il pattern: lettera 'a', lettera
'b' un numero qualsiasi di volte, lettera
'a'.
Data una stringa:
txt = 'aa aba abba abbba abca abea'
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba', 'abba',
'abbba' secondo il pattern: lettera
'a', lettera 'b' un numero qualsiasi di volte
(anche zero volte), lettera
'a'.
Data una stringa:
txt = 'aa aba abba abbba abca abea'
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba' secondo il pattern:
lettera 'a', lettera 'b' una
volta o zero, lettera 'a'.
Data una stringa:
txt = 'aa aba abba abbba abca abea'
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba', 'abba',
'abbba', senza catturare 'abca'
e 'abea'.