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':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)

print(res)

Rezultat izvajanja kode:

python'xx ! ! ! xbx'

Primer

Poiščimo vse podnize po vzorcu črka 'x', črka 'a' nič ali več krat, črka 'x':

pythontxt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)

print(res)

Rezultat izvajanja kode:

python'! ! ! ! xbx'

Primer

Poiščimo vse podnize po vzorcu črka 'x', črka 'a' nič ali enkrat, črka 'x':

pythontxt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)

print(res)

Rezultat izvajanja kode:

python'! ! xaax xbx'

Praktične naloge

Задание 1

Podan niz:

pythontxt = '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'.

Задание 2

Podan niz:

pythontxt = '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'.

Задание 3

Podan niz:

pythontxt = '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'.

Задание 4

Podan niz:

pythontxt = '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'.