Sümbolite kordusoperaatorid
On olukordi, kus on vaja määrata, et
sümbol kordub etteantud arv
kordi. Kui täpne korduste arv on teadmata,
siis võib selle lihtsalt mitu korda
kirjutada - 'aaaa'. Aga mida teha, kui on vaja
öelda midagi sellist: korda üks või rohkem
korda?
Selleks on olemas korduse operaatorid (kvantifikaatorid):
pluss + (üks või rohkem
korda), tärn * (null või rohkem
korda) ja küsimärk ? (null või üks kord).
Need operaatorid mõjuvad sellele sümbolile,
mis nende ees seisab.
Vaatame nende operaatorite tööd näidete varal.
Näide
Leiame kõik alamstringid mustri täht
'x', täht 'a' üks või rohkem
korda, täht 'x' järgi:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Koodi täitmise tulemus:
'xx ! ! ! xbx'
Näide
Leiame kõik alamstringid mustri täht
'x', täht 'a' null või rohkem
korda, täht 'x' järgi:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! ! xbx'
Näide
Leiame kõik alamstringid mustri täht
'x', täht 'a' null või üks
kord, täht 'x' järgi:
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! xaax xbx'
Praktilised ülesanded
Antud string:
txt = 'aa aba abba abbba abca abea'
Kirjutage regulaaravaldis, mis leiab stringid
'aba', 'abba', 'abbba'
mustri järgi: täht 'a', täht
'b' suvaline arv kordi, täht
'a'.
Antud string:
txt = 'aa aba abba abbba abca abea'
Kirjutage regulaaravaldis, mis leiab stringid
'aa', 'aba', 'abba',
'abbba' mustri järgi: täht
'a', täht 'b' suvaline arv kordi
(kaasa arvatud mitte ühtegi korda), täht
'a'.
Antud string:
txt = 'aa aba abba abbba abca abea'
Kirjutage regulaaravaldis, mis leiab stringid
'aa', 'aba' mustri järgi:
täht 'a', täht 'b' üks
kord või mitte ühtegi, täht 'a'.
Antud string:
txt = 'aa aba abba abbba abca abea'
Kirjutage regulaaravaldis, mis leiab stringid
'aa', 'aba', 'abba',
'abbba', ilma et haaraks 'abca'
ja 'abea'.