Comanda 'sau' în expresiile regulate Python
Comanda '|', care reprezintă
o variantă mai puternică a 'sau'
în comparație cu comanda [ ]. Această comandă
permite împărțirea expresiei regulate în mai multe
părți. În acest caz, ceea ce este căutat
poate să se potrivească fie cu o parte a expresiei regulate, fie cu
alta. Să vedem câteva exemple.
Exemplu
În acest exemplu, modelul de căutare este următorul:
trei litere 'a' sau trei litere
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Rezultatul executării codului:
'! ! abb'
Exemplu
În acest exemplu, modelul de căutare este următorul:
trei litere 'a' sau de la 1 și
mai multe litere 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! ! axx'
Exemplu
În acest exemplu, modelul de căutare este următorul: una sau mai multe litere sau trei cifre:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! 1 12 !'
Exemplu
Bara verticală poate împărți expresia regulată nu în două părți, ci în orice număr de părți:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! ddd'
Exemplu
Dacă bara verticală se află în interiorul parantezelor
rotunde, atunci 'sau' funcționează doar
în interiorul acestor paranteze.
De exemplu, să găsim șirurile conform
următorului model: la început se află fie
'a', fie 'b' de una sau mai multe
ori, iar apoi două litere 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! exx'
Probleme practice
Este dat șirul:
txt = 'aeeea aeea aea axa axxa axxxa'
Scrieți o expresie regulată care va găsi șirurile
conform modelului: pe margini sunt literele
'a', iar între ele - fie litera
'e' de oricâte ori, fie litera
'x' de oricâte ori.
Este dat șirul:
txt = 'aeeea aeea aea axa axxa axxxa'
Scrieți o expresie regulată care va găsi șirurile
conform modelului: pe margini sunt literele
'a', iar între ele - fie litera
'e' de două ori, fie litera 'x'
de oricâte ori.