Оператори за повторение на символи в регулярни изрази

Има ситуации, когато трябва да се укаже, че символът се повтаря зададен брой пъти. Ако точният брой повторения не е известен, тогава може просто да се напише няколко пъти - 'aaaa'. Но какво да правим, ако трябва да се каже нещо такова: повтори един или повече пъти?

За това съществуват оператори (квантификатори) за повторение: плюс + (един или повече пъти), звездичка * (нула или повече пъти) и въпрос ? (нула или един път). Тези оператори действат върху символа, който стои пред тях.

Нека разгледаме действието на тези оператори с примери.

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' един или повече пъти, буква 'x':

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

print(res)

Резултат от изпълнението на кода:

python'xx ! ! ! xbx'

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' нула или повече пъти, буква 'x':

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

print(res)

Резултат от изпълнението на кода:

python'! ! ! ! xbx'

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' нула или един път, буква 'x':

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

print(res)

Резултат от изпълнението на кода:

python'! ! xaax xbx'

Практически задачи

Задание 1

Даден е низ:

pythontxt = 'aa aba abba abbba abca abea'

Напишете регулярен израз, който ще намери низовете 'aba', 'abba', 'abbba' по шаблон: буква 'a', буква 'b' произволен брой пъти, буква 'a'.

Задание 2

Даден е низ:

pythontxt = 'aa aba abba abbba abca abea'

Напишете регулярен израз, който ще намери низовете 'aa', 'aba', 'abba', 'abbba' по шаблон: буква 'a', буква 'b' произволен брой пъти (включително нула пъти), буква 'a'.

Задание 3

Даден е низ:

pythontxt = 'aa aba abba abbba abca abea'

Напишете регулярен израз, който ще намери низовете 'aa', 'aba' по шаблон: буква 'a', буква 'b' един път или нула пъти, буква 'a'.

Задание 4

Даден е низ:

pythontxt = 'aa aba abba abbba abca abea'

Напишете регулярен израз, който ще намери низовете 'aa', 'aba', 'abba', 'abbba', без да улавя 'abca' и 'abea'.