Фигурные скобки в регулярных выражениях Python

Операторы '+', '*', '?' хороши, однако, с их помощью нельзя указать конкретное число повторений. В этом случае вам на помощь придет оператор {}.

Работает он следующим образом: {5} - пять повторений, {2,5} – повторяется от двух до пяти (оба включительно), {2,} - повторяется два и более раз. Посмотрите примеры:

Пример

В данном примере шаблон поиска выглядит так: буква 'x', буква 'a' один или два раза, буква 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)

print(res)

Результат выполнения кода:

python'xx ! ! xaaax'

Пример

В данном примере шаблон поиска выглядит так: буква 'x', буква 'a' два раза и более, буква 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)

print(res)

Результат выполнения кода:

python'xx xax ! !'

Пример

В данном примере шаблон поиска выглядит так: буква 'x', буква 'a' три раза, буква 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)

print(res)

Результат выполнения кода:

python'xx xax xaax !'

Пример

В данном примере шаблон поиска выглядит так: буква 'a' десять раз:

pythontxt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)

print(res)

Результат выполнения кода:

python'aaa ! aaa'

Пример

В данном примере есть такой шаблон: буква 'x', буква 'a' три раза раза и меньше, буква 'x'. Для того, чтобы его реализовать, перед цифрой 3 можно не указывать число, а поставить просто запятую:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)

print(res)

Результат выполнения кода:

python'! ! ! !'

Пример

Ноль перед 3 тоже допустим:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)

print(res)

Результат выполнения кода:

python'! ! ! !'

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

Задание 1

Дана строка:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Напишите регулярку, которая найдет строки 'abba', 'abbba', 'abbbba' и только их.

Задание 2

Дана строка:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Напишите регулярку, которая найдет строки вида 'aba', в которых 'b' встречается менее 3-х раз (включительно).

Задание 3

Дана строка:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Напишите регулярку, которая найдет строки вида 'aba', в которых 'b' встречается более 4-х раз (включительно).