'Tai'-komento Pythonin säännöllisissä lausekkeissa
Komento '|', joka edustaa
voimakkaampaa versiota 'tai'
verrattuna komentoon [ ]. Tämä komento
sallii säännöllisen lausekkeen jakamisen useisiin
osiin. Samalla haettu voi osua
joko yhteen säännöllisen lausekkeen osaan tai
toiseen. Katsotaanpa esimerkein.
Esimerkki
Tässä esimerkissä hakumalli on seuraava:
kolme kirjainta 'a' tai kolme kirjainta
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! abb'
Esimerkki
Tässä esimerkissä hakumalli on seuraava:
kolme kirjainta 'a' tai 1 tai
enemmän kirjainta 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! ! axx'
Esimerkki
Tässä esimerkissä hakumalli on seuraava: yksi tai useampi kirjain tai kolme numeroa:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! 1 12 !'
Esimerkki
Pystyviiva voi jakaa säännöllisen lausekkeen ei kahteen osaan, vaan mihin tahansa määrään osia:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! ddd'
Esimerkki
Jos pystyviiva on pyöreiden sulkeiden
sisällä, niin 'tai' toimii vain
näiden sulkeiden sisällä.
Esimerkkinä etsitään merkkijonot seuraavan
mallin mukaan: alussa on joko
'a' tai 'b' yksi tai useampi
kerta, ja sitten kaksi kirjainta 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Koodin suorituksen tulos:
'! ! ! exx'
Käytännön tehtävät
Annettu merkkijono:
txt = 'aeeea aeea aea axa axxa axxxa'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
seuraavan mallin mukaan: reunoissa on kirjaimet
'a', ja niiden välissä - joko kirjain
'e' mielivaltainen määrä kertoja tai kirjain
'x' mielivaltainen määrä kertoja.
Annettu merkkijono:
txt = 'aeeea aeea aea axa axxa axxxa'
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
seuraavan mallin mukaan: reunoissa on kirjaimet
'a', ja niiden välissä - joko kirjain
'e' kaksi kertaa tai kirjain 'x'
mielivaltainen määrä kertoja.