Komanda 'ose' në shprehjet e rregullta të Python
Komanda '|', e cila përfaqëson
një variant më të fuqishëm të 'ose'
krahasuar me komandën [ ]. Kjo komandë
lejon ndarjen e regex në disa pjesë.
Në këtë rast, ajo që kërkohet mund të përshtatet
ose në një pjesë të regex, ose në një tjetër.
Le të shohim me shembuj.
Shembull
Në këtë shembull, modeli i kërkimit është:
tri shkronja 'a' ose tri shkronja
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! abb'
Shembull
Në këtë shembull, modeli i kërkimit është:
tri shkronja 'a' ose nga 1
e lart shkronja 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! ! axx'
Shembull
Në këtë shembull, modeli i kërkimit është: një ose më shumë shkronja ose tre shifra:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! 1 12 !'
Shembull
Vija vertikale mund ta ndajë regex jo në dy pjesë, por në çdo numër pjesësh:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! ddd'
Shembull
Nëse vija vertikale qëndron brenda kllapave
të rrumbullakëta, atëherë 'ose' funksionon vetëm
brenda atyre kllapave.
Si shembull, le të gjejmë stringjet sipas
modelit të mëposhtëm: në fillim qëndron ose
'a', ose 'b' një ose më shumë herë,
e më pas dy shkronja 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! exx'
Detyra praktike
Është dhënë stringu:
txt = 'aeeea aeea aea axa axxa axxxa'
Shkruani një regex që do të gjejë stringjet
sipas modelit: në anët qëndrojnë shkronjat
'a', dhe midis tyre - ose shkronja
'e' çdo numër herësh ose shkronja
'x' çdo numër herësh.
Është dhënë stringu:
txt = 'aeeea aeea aea axa axxa axxxa'
Shkruani një regex që do të gjejë stringjet
sipas modelit: në anët qëndrojnë shkronjat
'a', dhe midis tyre - ose shkronja
'e' dy herë ose shkronja 'x'
çdo numër herësh.