Viticaste zagrade u regularnim izrazima Pythona

Operatorima '+', '*', '?' je dobro, ali pomoću njih ne možete da navedete tačan broj ponavljanja. U tom slučaju će vam pomoći operator {}.

Radi na sledeći način: {5} - pet ponavljanja, {2,5} – ponavlja se od dva do pet (oba uključujući), {2,} - ponavlja se dva ili više puta. Pogledajte primer:

Primer

U ovom primeru obrazac (pattern) za pretragu izgleda ovako: slovo 'x', slovo 'a' jedan ili dva puta, slovo 'x':

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

print(res)

Rezultat izvršavanja koda:

python'xx ! ! xaaax'

Primer

U ovom primeru obrazac za pretragu izgleda ovako: slovo 'x', slovo 'a' dva puta ili više, slovo 'x':

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

print(res)

Rezultat izvršavanja koda:

python'xx xax ! !'

Primer

U ovom primeru obrazac za pretragu izgleda ovako: slovo 'x', slovo 'a' tri puta, slovo 'x':

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

print(res)

Rezultat izvršavanja koda:

python'xx xax xaax !'

Primer

U ovom primeru obrazac za pretragu izgleda ovako: slovo 'a' deset puta:

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

print(res)

Rezultat izvršavanja koda:

python'aaa ! aaa'

Primer

U ovom primeru postoji ovakav obrazac: slovo 'x', slovo 'a' tri puta i manje, slovo 'x'. Da biste ga realizovali, ispred broja 3 ne morate da navedete broj, već možete da stavite samo zarez:

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

print(res)

Rezultat izvršavanja koda:

python'! ! ! !'

Primer

Nula ispred 3 je takođe dozvoljena:

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

print(res)

Rezultat izvršavanja koda:

python'! ! ! !'

Praktični zadaci

Задание 1

Data je string (niska):

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napišite regularni izraz koji će da nađe stringove 'abba', 'abbba', 'abbbba' i samo njih.

Задание 2

Data je string (niska):

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napišite regularni izraz koji će da nađe stringove tipa 'aba', u kojima se 'b' pojavljuje manje od 3 puta (uključujući).

Задание 3

Data je string (niska):

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napišite regularni izraz koji će da nađe stringove tipa 'aba', u kojima se 'b' pojavljuje više od 4 puta (uključujući).