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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Wynik wykonania kodu:
'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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Wynik wykonania kodu:
'xx xax ! !'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda
następująco: litera 'x', litera 'a'
trzy razy, litera 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Wynik wykonania kodu:
'xx xax xaax !'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda
następująco: litera 'a' dziesięć razy:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Wynik wykonania kodu:
'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:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! !'
Przykład
Zero przed 3 również jest dopuszczalne:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! !'
Zadania praktyczne
Dany jest ciąg znaków:
txt = 'aa aba abba abbba abbbba abbbbba'
Napisz wyrażenie regularne, które znajdzie ciągi
'abba', 'abbba', 'abbbba'
i tylko je.
Dany jest ciąg znaków:
txt = '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).
Dany jest ciąg znaków:
txt = '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).