Operatori ponavljanja karaktera u regularnim izrazima
Dešavaju se situacije kada treba naznačiti da se
karakter ponavlja zadati broj
puta. Ako tačan broj ponavljanja nije poznat,
možemo ga jednostavno napisati više puta
- 'aaaa'. Ali šta raditi ako treba
reći ovako: ponoviti jedan ili više
puta?
Za to postoje operatori (kvantifikatori)
ponavljanja: plus + (jedan ili više
puta), zvezdica * (nula ili više
puta) i znak pitanja ? (nula ili jedan put).
Ovi operatori deluju na onaj karakter
koji stoji ispred njih.
Pogledajmo rad ovih operatora na primerima.
Primer
Naći ćemo sve podstringove po šablonu slovo
'x', slovo 'a' jedan ili više
puta, slovo 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Rezultat izvršavanja koda:
'xx ! ! ! xbx'
Primer
Naći ćemo sve podstringove po šablonu slovo
'x', slovo 'a' nula ili više
puta, slovo 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! ! ! xbx'
Primer
Naći ćemo sve podstringove po šablonu slovo
'x', slovo 'a' nula ili jedan
put, slovo 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! xaax xbx'
Praktični zadaci
Data je string:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz koji će naći stringove
'aba', 'abba', 'abbba'
po šablonu: slovo 'a', slovo
'b' bilo koji broj puta, slovo
'a'.
Data je string:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz koji će naći stringove
'aa', 'aba', 'abba',
'abbba' po šablonu: slovo
'a', slovo 'b' bilo koji broj puta
(uključujući ni jedan put), slovo
'a'.
Data je string:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz koji će naći stringove
'aa', 'aba' po šablonu:
slovo 'a', slovo 'b' jedan
put ili nijedan, slovo 'a'.
Data je string:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz koji će naći stringove
'aa', 'aba', 'abba',
'abbba', a neće zahvatiti 'abca'
i 'abea'.