'Või' käsk Pythoni regulaaravaldistes
Käsk '|', mis esindab
võimsamat varianti 'või'
võrreldes käsuga [ ]. See käsk
võimaldab jagada regulaaravaldise mitmeks
osaks. Sel juhul võib otsitav vastata
kas ühele regulaaravaldise osale või
teisele. Vaatame näidete varal.
Näide
Selles näites on otsimismustriks:
kolm tähte 'a' või kolm tähte
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! abb'
Näide
Selles näites on otsimismustriks:
kolm tähte 'a' või 1 kuni
rohkem tähte 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! ! axx'
Näide
Selles näites on otsimismustriks: üks või rohkem tähte või kolm numbrit:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! 1 12 !'
Näide
Vertikaalne joon võib jagada regulaaravaldise mitte kaheks osaks, vaid suvaliseks arvuks osadeks:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! ddd'
Näide
Kui vertikaalne joon asub ümarsulgude
sees, siis 'või' töötab ainult
nende sulgude sees.
Näitena otsime üles stringid järgmise
mustri järgi: alguses on kas
'a' või 'b' üks või mitu
korda, ja seejärel kaks tähte 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! exx'
Praktilised ülesanded
Antud string:
txt = 'aeeea aeea aea axa axxa axxxa'
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: servades on tähed
'a', ja nende vahel - kas täht
'e' suvaline arv kordi või täht
'x' suvaline arv kordi.
Antud string:
txt = 'aeeea aeea aea axa axxa axxxa'
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: servades on tähed
'a', ja nende vahel - kas täht
'e' kaks korda või täht 'x'
suvaline arv kordi.