Komanda 'arba' Python reguliariosiose išraiškose
Komanda '|', kuri reprezentuoja
galingesnį 'arba' varianto
atitikmenį, palyginti su komanda [ ]. Ši komanda
leidžia padalinti reguliariąją išraišką į kelias
dalis. Tuo pačiu metu ieškomas elementas gali atitikti
arba vieną reguliariosios išraiškos dalį, arba
kita. Pažiūrėkime į pavyzdžius.
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks:
trys raidės 'a' arba trys raidės
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! abb'
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks:
trys raidės 'a' arba nuo 1 iki
daugiau raidžių 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! ! axx'
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks: viena ar daugiau raidžių arba trys skaitmenys:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! 1 12 !'
Pavyzdys
Vertikali linija gali padalinti reguliariąją išraišką ne į dvi dalis, o į bet kokį kiekį dalių:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! ddd'
Pavyzdys
Jei vertikali linija yra apvaliuose skliaustuose,
tai 'arba' veikia tik
šių skliaustų ribose.
Pavyzdžiui, suraskime eilutes pagal
šį šabloną: pradžioje yra arba
'a', arba 'b' vieną ar daugiau
kartų, o po to dvi raidės 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! exx'
Praktinės užduotys
Duota eilutė:
txt = 'aeeea aeea aea axa axxa axxxa'
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: kraštuose yra raidės
'a', o tarp jų - arba raidė
'e' bet koks kiekis kartų arba raidė
'x' bet koks kiekis kartų.
Duota eilutė:
txt = 'aeeea aeea aea axa axxa axxxa'
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: kraštuose yra raidės
'a', o tarp jų - arba raidė
'e' du kartus arba raidė 'x'
bet koks kiekis kartų.