Nawiasy klamrowe w wyrażeniach regularnych Pythona

Operatory '+', '*', '?' są przydatne, jednak nie można za ich pomocą określić konkretnej liczby powtórzeń. W tym przypadku z pomocą przychodzi operator {}.

Działa on w następujący sposób: {5} - pięć powtórzeń, {2,5} – powtarza się od dwóch do pięciu (oba włącznie), {2,} - powtarza się dwa lub więcej razy. Spójrz na przykłady:

Przykład

W tym przykładzie wzorzec wyszukiwania wygląda następująco: litera 'x', litera 'a' jeden lub dwa razy, litera 'x':

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

print(res)

Wynik wykonania kodu:

python'xx ! ! xaaax'

Przykład

W tym przykładzie wzorzec wyszukiwania wygląda następująco: litera 'x', litera 'a' dwa razy lub więcej, litera 'x':

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

print(res)

Wynik wykonania kodu:

python'xx xax ! !'

Przykład

W tym przykładzie wzorzec wyszukiwania wygląda następująco: litera 'x', litera 'a' trzy razy, litera 'x':

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

print(res)

Wynik wykonania kodu:

python'xx xax xaax !'

Przykład

W tym przykładzie wzorzec wyszukiwania wygląda następująco: litera 'a' dziesięć razy:

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

print(res)

Wynik wykonania kodu:

python'aaa ! aaa'

Przykład

W tym przykładzie występuje taki wzorzec: litera 'x', litera 'a' trzy razy i mniej, litera 'x'. Aby go zrealizować, przed cyfrą 3 można nie podawać liczby, a postawić po prostu przecinek:

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

print(res)

Wynik wykonania kodu:

python'! ! ! !'

Przykład

Zero przed 3 również jest dopuszczalne:

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

print(res)

Wynik wykonania kodu:

python'! ! ! !'

Zadania praktyczne

Задание 1

Dany jest ciąg znaków:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napisz wyrażenie regularne, które znajdzie ciągi 'abba', 'abbba', 'abbbba' i tylko je.

Задание 2

Dany jest ciąg znaków:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napisz wyrażenie regularne, które znajdzie ciągi typu 'aba', w których 'b' występuje mniej niż 3 razy (włącznie).

Задание 3

Dany jest ciąg znaków:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napisz wyrażenie regularne, które znajdzie ciągi typu 'aba', w których 'b' występuje więcej niż 4 razy (włącznie).