Príkaz 'alebo' v regulárnych výrazoch Python

Príkaz '|', ktorý predstavuje výkonnejšiu variantu 'alebo' v porovnaní s príkazom [ ]. Tento príkaz umožňuje rozdeliť regulárny výraz na niekoľko častí. Pričom hľadaný reťazec môže spĺňať buď jednu časť regulárneho výrazu, alebo druhú. Pozrime sa na príklady.

Príklad

V tomto príklade je vyhľadávací vzor taký: tri písmená 'a' alebo tri písmená 'b':

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

print(res)

Výsledok vykonania kódu:

python'! ! abb'

Príklad

V tomto príklade je vyhľadávací vzor taký: tri písmená 'a' alebo od 1 a viac písmen 'b':

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

print(res)

Výsledok vykonania kódu:

python'! ! ! ! axx'

Príklad

V tomto príklade je vyhľadávací vzor taký: jedno alebo viac písmen alebo tri číslice:

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

print(res)

Výsledok vykonania kódu:

python'! ! ! 1 12 !'

Príklad

Zvislá čiara môže rozdeliť regulárny výraz nie na dve časti, ale na ľubovoľný počet častí:

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

print(res)

Výsledok vykonania kódu:

python'! ! ! ddd'

Príklad

Ak je zvislá čiara v okrúhlych zátvorkách, tak 'alebo' funguje len vnútri týchto zátvoriek.

Pre príklad nájdime reťazce podľa nasledujúceho vzoru: na začiatku je alebo 'a', alebo 'b' jeden alebo viac krát, a potom dve písmená 'x':

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

print(res)

Výsledok vykonania kódu:

python'! ! ! exx'

Praktické úlohy

Задание 1

Daný reťazec:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napíšte regulárny výraz, ktorý nájde reťazce podľa vzoru: na okrajoch sú písmená 'a', a medzi nimi - alebo písmeno 'e' ľubovoľný počet krát alebo písmeno 'x' ľubovoľný počet krát.

Задание 2

Daný reťazec:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napíšte regulárny výraz, ktorý nájde reťazce podľa vzoru: na okrajoch sú písmená 'a', a medzi nimi - alebo písmeno 'e' dva krát alebo písmeno 'x' ľubovoľný počet krát.