Operátory opakovania znakov v regulárnych výrazoch
Nastávajú situácie, keď je potrebné určiť, že
znak sa opakuje daný počet
krát. Ak presný počet opakovaní nie je známy,
možno ho jednoducho napísať viackrát
- 'aaaa'. Ale čo robiť, ak je potrebné
povedať niečo také: opakovať jeden alebo viac
krát?
Na to existujú operátory (kvantifikátory)
opakovania: plus + (jeden alebo viac
krát), hviezdička * (nula alebo viac
krát) a otáznik ? (nula alebo jeden raz).
Tieto operátory pôsobia na ten znak,
ktorý stojí pred nimi.
Pozrime sa na činnosť týchto operátorov na príkladoch.
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' jeden alebo viac
krát, písmeno 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Výsledok vykonania kódu:
'xx ! ! ! xbx'
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' nula alebo viac
krát, písmeno 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! ! ! xbx'
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' nula alebo jeden
raz, písmeno 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! xaax xbx'
Praktické úlohy
Daný reťazec:
txt = 'aa aba abba abbba abca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'aba', 'abba', 'abbba'
podľa vzoru: písmeno 'a', písmeno
'b' ľubovoľný počet krát, písmeno
'a'.
Daný reťazec:
txt = 'aa aba abba abbba abca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'aa', 'aba', 'abba',
'abbba' podľa vzoru: písmeno
'a', písmeno 'b' ľubovoľný počet
krát (vrátane žiadneho krát), písmeno
'a'.
Daný reťazec:
txt = 'aa aba abba abbba abca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'aa', 'aba' podľa vzoru:
písmeno 'a', písmeno 'b' jeden
raz alebo žiadny, písmeno 'a'.
Daný reťazec:
txt = 'aa aba abba abbba abca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'aa', 'aba', 'abba',
'abbba', bez zachytenia 'abca'
a 'abea'.