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':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! 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':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! ! ! axx'
Príklad
V tomto príklade je vyhľadávací vzor taký: jedno alebo viac písmen alebo tri číslice:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! ! 1 12 !'
Príklad
Zvislá čiara môže rozdeliť regulárny výraz nie na dve časti, ale na ľubovoľný počet častí:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! ! 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':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! ! exx'
Praktické úlohy
Daný reťazec:
txt = '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.
Daný reťazec:
txt = '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.