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':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)

print(res)

Risultato dell'esecuzione del codice:

python'xx ! ! ! xbx'

Esempio

Troviamo tutte le sottostringhe secondo il pattern lettera 'x', lettera 'a' zero o più volte, lettera 'x':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)

print(res)

Risultato dell'esecuzione del codice:

python'! ! ! ! xbx'

Esempio

Troviamo tutte le sottostringhe secondo il pattern lettera 'x', lettera 'a' zero o una volta, lettera 'x':

pythontxt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)

print(res)

Risultato dell'esecuzione del codice:

python'! ! xaax xbx'

Problemi pratici

Задание 1

Data una stringa:

pythontxt = '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'.

Задание 2

Data una stringa:

pythontxt = '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'.

Задание 3

Data una stringa:

pythontxt = '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'.

Задание 4

Data una stringa:

pythontxt = 'aa aba abba abbba abca abea'

Scrivi un'espressione regolare che trovi le stringhe 'aa', 'aba', 'abba', 'abbba', senza catturare 'abca' e 'abea'.