Оператори за повторение на символи в регулярни изрази
Има ситуации, когато трябва да се укаже, че
символът се повтаря зададен брой
пъти. Ако точният брой повторения не е известен,
тогава може просто да се напише няколко пъти
- 'aaaa'. Но какво да правим, ако трябва
да се каже нещо такова: повтори един или повече
пъти?
За това съществуват оператори (квантификатори)
за повторение: плюс + (един или повече
пъти), звездичка * (нула или повече
пъти) и въпрос ? (нула или един път).
Тези оператори действат върху символа,
който стои пред тях.
Нека разгледаме действието на тези оператори с примери.
Пример
Нека намерим всички поднизове по шаблон буква
'x', буква 'a' един или повече
пъти, буква 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Резултат от изпълнението на кода:
'xx ! ! ! xbx'
Пример
Нека намерим всички поднизове по шаблон буква
'x', буква 'a' нула или повече
пъти, буква 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! ! ! xbx'
Пример
Нека намерим всички поднизове по шаблон буква
'x', буква 'a' нула или един
път, буква 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Резултат от изпълнението на кода:
'! ! xaax xbx'
Практически задачи
Даден е низ:
txt = 'aa aba abba abbba abca abea'
Напишете регулярен израз, който ще намери низовете
'aba', 'abba', 'abbba'
по шаблон: буква 'a', буква
'b' произволен брой пъти, буква
'a'.
Даден е низ:
txt = 'aa aba abba abbba abca abea'
Напишете регулярен израз, който ще намери низовете
'aa', 'aba', 'abba',
'abbba' по шаблон: буква
'a', буква 'b' произволен брой пъти
(включително нула пъти), буква
'a'.
Даден е низ:
txt = 'aa aba abba abbba abca abea'
Напишете регулярен израз, който ще намери низовете
'aa', 'aba' по шаблон:
буква 'a', буква 'b' един
път или нула пъти, буква 'a'.
Даден е низ:
txt = 'aa aba abba abbba abca abea'
Напишете регулярен израз, който ще намери низовете
'aa', 'aba', 'abba',
'abbba', без да улавя 'abca'
и 'abea'.