Фигурные скобки в регулярных выражениях Python
Операторы '+'
, '*'
, '?'
хороши, однако, с их помощью нельзя указать
конкретное число повторений. В этом случае
вам на помощь придет оператор {}
.
Работает он следующим образом: {5}
- пять повторений, {2,5}
– повторяется
от двух до пяти (оба включительно), {2,}
- повторяется два и более раз.
Посмотрите примеры:
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
один
или два раза, буква 'x'
:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Результат выполнения кода:
'xx ! ! xaaax'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
два
раза и более, буква 'x'
:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Результат выполнения кода:
'xx xax ! !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
три
раза, буква 'x'
:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Результат выполнения кода:
'xx xax xaax !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'a'
десять раз:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Результат выполнения кода:
'aaa ! aaa'
Пример
В данном примере есть такой шаблон:
буква 'x'
, буква 'a'
три
раза раза и меньше, буква 'x'
.
Для того, чтобы его реализовать, перед цифрой 3
можно не указывать число, а поставить
просто запятую:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Результат выполнения кода:
'! ! ! !'
Пример
Ноль перед 3
тоже допустим:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Результат выполнения кода:
'! ! ! !'
Практические задачи
Дана строка:
txt = 'aa aba abba abbba abbbba abbbbba'
Напишите регулярку, которая найдет строки
'abba'
, 'abbba'
, 'abbbba'
и только их.
Дана строка:
txt = 'aa aba abba abbba abbbba abbbbba'
Напишите регулярку, которая найдет строки
вида 'aba'
, в которых 'b'
встречается
менее 3
-х раз (включительно).
Дана строка:
txt = 'aa aba abba abbba abbbba abbbbba'
Напишите регулярку, которая найдет строки
вида 'aba'
, в которых 'b'
встречается
более 4
-х раз (включительно).