Operatori de repetare a caracterelor în expresii regulate

Există situații când trebuie să specifici că un caracter se repetă de un anumit număr de ori. Dacă numărul exact de repetări este necunoscut, atunci poți să-l scrii de mai multe ori - 'aaaa'. Dar ce să faci dacă trebuie să spui așa ceva: repetă de una sau mai multe ori?

Pentru asta există operatori (cuantificatori) de repetare: plus + (una sau mai multe ori), steluță * (zero sau mai multe ori) și semnul întrebării ? (zero sau o dată). Acești operatori acționează asupra caracterului care se află înaintea lor.

Să analizăm funcționarea acestor operatori cu exemple.

Exemplul

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' una sau mai multe ori, litera 'x':

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

print(res)

Rezultatul executării codului:

python'xx ! ! ! xbx'

Exemplul

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' zero sau mai multe ori, litera 'x':

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

print(res)

Rezultatul executării codului:

python'! ! ! ! xbx'

Exemplul

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' zero sau o dată, litera 'x':

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

print(res)

Rezultatul executării codului:

python'! ! xaax xbx'

Probleme practice

Задание 1

Este dat șirul:

pythontxt = 'aa aba abba abbba abca abea'

Scrieți o expresie regulată care va găsi șirurile 'aba', 'abba', 'abbba' după șablonul: litera 'a', litera 'b' de oricâte ori, litera 'a'.

Задание 2

Este dat șirul:

pythontxt = 'aa aba abba abbba abca abea'

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba', 'abba', 'abbba' după șablonul: litera 'a', litera 'b' de oricâte ori (inclusiv de zero ori), litera 'a'.

Задание 3

Este dat șirul:

pythontxt = 'aa aba abba abbba abca abea'

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba' după șablonul: litera 'a', litera 'b' o dată sau de zero ori, litera 'a'.

Задание 4

Este dat șirul:

pythontxt = 'aa aba abba abbba abca abea'

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba', 'abba', 'abbba', fără a captura 'abca' și 'abea'.