Operatory powtarzania znaków w wyrażeniach regularnych

Zdarzają się sytuacje, gdy trzeba wskazać, że znak powtarza się zadaną liczbę razy. Jeśli dokładna liczba powtórzeń jest nieznana, można po prostu napisać go kilka razy - 'aaaa'. Ale co zrobić, gdy trzeba powiedzieć coś takiego: powtórz jeden lub więcej razy?

Do tego służą operatory (kwantyfikatory) powtórzenia: plus + (jeden lub więcej razy), gwiazdka * (zero lub więcej razy) i znak zapytania ? (zero lub jeden raz). Te operatory działają na znak, który stoi przed nimi.

Przyjrzyjmy się działaniu tych operatorów na przykładach.

Przykład

Znajdźmy wszystkie podciągi według wzorca litera 'x', litera 'a' jeden lub więcej razy, litera 'x':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)

print(res)

Wynik wykonania kodu:

python'xx ! ! ! xbx'

Przykład

Znajdźmy wszystkie podciągi według wzorca litera 'x', litera 'a' zero lub więcej razy, litera 'x':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)

print(res)

Wynik wykonania kodu:

python'! ! ! ! xbx'

Przykład

Znajdźmy wszystkie podciągi według wzorca litera 'x', litera 'a' zero lub jeden raz, litera 'x':

pythontxt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)

print(res)

Wynik wykonania kodu:

python'! ! xaax xbx'

Zadania praktyczne

Задание 1

Dany jest ciąg:

pythontxt = 'aa aba abba abbba abca abea'

Napisz wyrażenie regularne, które znajdzie ciągi 'aba', 'abba', 'abbba' według wzorca: litera 'a', litera 'b' dowolną liczbę razy, litera 'a'.

Задание 2

Dany jest ciąg:

pythontxt = 'aa aba abba abbba abca abea'

Napisz wyrażenie regularne, które znajdzie ciągi 'aa', 'aba', 'abba', 'abbba' według wzorca: litera 'a', litera 'b' dowolną liczbę razy (w tym zero razy), litera 'a'.

Задание 3

Dany jest ciąg:

pythontxt = 'aa aba abba abbba abca abea'

Napisz wyrażenie regularne, które znajdzie ciągi 'aa', 'aba' według wzorca: litera 'a', litera 'b' jeden raz lub zero razy, litera 'a'.

Задание 4

Dany jest ciąg:

pythontxt = 'aa aba abba abbba abca abea'

Napisz wyrażenie regularne, które znajdzie ciągi 'aa', 'aba', 'abba', 'abbba', nie łapiąc 'abca' i 'abea'.