Operatorji ponavljanja znakov v regularnih izrazih
Obstajajo situacije, ko je treba navesti, da se
znak ponovi določeno število
krat. Če natančno število ponovitev ni znano,
ga lahko preprosto napišete večkrat
- 'aaaa'. Toda kaj storiti, če morate
reči nekaj takega: ponoviti enkrat ali več
krat?
Za to obstajajo operatorji (kvantifikatorji)
ponavljanja: plus + (enkrat ali več
krat), zvezdica * (nič ali več
krat) in vprašaj ? (nič ali enkrat).
Ti operatorji delujejo na znak,
ki stoji pred njimi.
Poglejmo si delovanje teh operatorjev na primerih.
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' enkrat ali več
krat, črka 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Rezultat izvajanja kode:
'xx ! ! ! xbx'
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' nič ali več
krat, črka 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! ! xbx'
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' nič ali enkrat,
črka 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! xaax xbx'
Praktične naloge
Podan niz:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz, ki bo poiskal nize
'aba', 'abba', 'abbba'
po vzorcu: črka 'a', črka
'b' poljubno število krat, črka
'a'.
Podan niz:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz, ki bo poiskal nize
'aa', 'aba', 'abba',
'abbba' po vzorcu: črka
'a', črka 'b' poljubno število krat
(vključno z nič krat), črka
'a'.
Podan niz:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz, ki bo poiskal nize
'aa', 'aba' po vzorcu:
črka 'a', črka 'b' enkrat
ali ničkrat, črka 'a'.
Podan niz:
txt = 'aa aba abba abbba abca abea'
Napišite regularni izraz, ki bo poiskal nize
'aa', 'aba', 'abba',
'abbba', ne da bi zajel 'abca'
in 'abea'.