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':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! abb'
Primer
V tem primeru je vzorec iskanja tak:
tri črke 'a' ali od 1 in
več črk 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! ! axx'
Primer
V tem primeru je vzorec iskanja tak: ena ali več črk ali tri številke:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! 1 12 !'
Primer
Navpična črta lahko razdeli regularni izraz ne na dva dela, ampak na poljubno število delov:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! 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':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! exx'
Praktične naloge
Dan je niz:
txt = '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.
Dan je niz:
txt = '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.