Ukaz 'ali' v regularnih izrazih Pythona

Ukaz '|', ki predstavlja močnejšo različico 'ali' v primerjavi z ukazom [ ]. Ta ukaz omogoča razdelitev regularnega izraza na več delov. Pri tem lahko iskani niz ustreza enemu delu regularnega izraza ali drugemu. Poglejmo si primere.

Primer

V tem primeru je vzorec iskanja tak: tri črke 'a' ali tri črke 'b':

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

print(res)

Rezultat izvajanja kode:

python'! ! abb'

Primer

V tem primeru je vzorec iskanja tak: tri črke 'a' ali od 1 in več črk 'b':

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

print(res)

Rezultat izvajanja kode:

python'! ! ! ! axx'

Primer

V tem primeru je vzorec iskanja tak: ena ali več črk ali tri številke:

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

print(res)

Rezultat izvajanja kode:

python'! ! ! 1 12 !'

Primer

Navpična črta lahko razdeli regularni izraz ne na dva dela, ampak na poljubno število delov:

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

print(res)

Rezultat izvajanja kode:

python'! ! ! ddd'

Primer

Če je navpična črta znotraj okroglih oklepajev, potem 'ali' deluje samo znotraj teh oklepajev.

Za primer poiščimo nize po naslednjem vzorcu: na začetku je ali 'a', ali 'b' enkrat ali večkrat, nato pa dve črki 'x':

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

print(res)

Rezultat izvajanja kode:

python'! ! ! exx'

Praktične naloge

Задание 1

Dan je niz:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napišite regularni izraz, ki bo našel nize po vzorcu: ob straneh so črke 'a', med njimi pa - ali črka 'e' poljubno število krat ali črka 'x' poljubno število krat.

Задание 2

Dan je niz:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napišite regularni izraz, ki bo našel nize po vzorcu: ob straneh so črke 'a', med njimi pa - ali črka 'e' dvakrat ali črka 'x' poljubno število krat.