Curly braces in Python regular expressions
Операторите '+', '*', '?'
са добри, но с тяхна помощ не може да се укаже
точно число на повторения. В този случай
на помощ идва операторът {}.
Работи по следния начин: {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 пъти (включително).