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':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Koda izpildes rezultāts:
'xx ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai vairāk
reizes, burts 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai viens
reizi, burts 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! xaax xbx'
Praktiskie uzdevumi
Dota virkne:
txt = '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'.
Dota virkne:
txt = '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'.
Dota virkne:
txt = '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'.
Dota virkne:
txt = 'aa aba abba abbba abca abea'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aa', 'aba', 'abba',
'abbba', neiekļaujot 'abca'
un 'abea'.