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

pythontxt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)

print(res)

Koodi täitmise tulemus:

python'! ! abb'

Näide

Selles näites on otsimismustriks: kolm tähte 'a' või 1 kuni rohkem tähte 'b':

pythontxt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)

print(res)

Koodi täitmise tulemus:

python'! ! ! ! axx'

Näide

Selles näites on otsimismustriks: üks või rohkem tähte või kolm numbrit:

pythontxt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)

print(res)

Koodi täitmise tulemus:

python'! ! ! 1 12 !'

Näide

Vertikaalne joon võib jagada regulaaravaldise mitte kaheks osaks, vaid suvaliseks arvuks osadeks:

pythontxt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)

print(res)

Koodi täitmise tulemus:

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

pythontxt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)

print(res)

Koodi täitmise tulemus:

python'! ! ! exx'

Praktilised ülesanded

Задание 1

Antud string:

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

Задание 2

Antud string:

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