Rakstzīmju atkārtošanās operatori

Ir situācijas, kad nepieciešams norādīt, ka rakstzīme atkārtojas noteiktu skaitu reizu. Ja precīzs atkārtojumu skaits nav zināms, tad to var vienkārši uzrakstīt vairākas reizes - 'aaaa'. Bet ko darīt, ja nepieciešams pateikt šādi: atkārtot vienu vai vairāk reizi?

Šim nolūkam pastāv atkārtošanās operatori (kvantifikatori): pluss + (viens vai vairāk reizi), zvaigznīte * (nulle vai vairāk reizi) un jautājums ? (nulle vai vienu reizi). Šie operatori iedarbojas uz to rakstzīmi, kura atrodas tieši pirms tiem.

Apskatīsim šo operatoru darbību ar piemēriem.

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' viens vai vairāk reizes, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'xx ! ! ! xbx'

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' nulle vai vairāk reizes, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'! ! ! ! xbx'

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' nulle vai viens reizi, burts 'x':

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

print(res)

Koda izpildes rezultāts:

python'! ! xaax xbx'

Praktiskie uzdevumi

Задание 1

Dota virkne:

pythontxt = 'aa aba abba abbba abca abea'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aba', 'abba', 'abbba' pēc šablona: burts 'a', burts 'b' jebkurš skaits reizu, burts 'a'.

Задание 2

Dota virkne:

pythontxt = 'aa aba abba abbba abca abea'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba', 'abba', 'abbba' pēc šablona: burts 'a', burts 'b' jebkurš skaits reizu (ieskaitot nevienu reizi), burts 'a'.

Задание 3

Dota virkne:

pythontxt = 'aa aba abba abbba abca abea'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba' pēc šablona: burts 'a', burts 'b' vienu reizi vai nevienu, burts 'a'.

Задание 4

Dota virkne:

pythontxt = 'aa aba abba abbba abca abea'

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba', 'abba', 'abbba', neiekļaujot 'abca' un 'abea'.