Riestiniai skliaustai Python reguliariosiose išraiškose
Operatoriai '+', '*', '?'
yra geri, tačiau jais negalima nurodyti
konkrečų pasikartojimų skaičių. Šiuo atveju
jums padės operatorius {}.
Jis veikia taip: {5}
- penki pasikartojimai, {2,5} – pasikartoja
nuo dviejų iki penkių (abu imtinai), {2,}
- pasikartoja du ar daugiau kartų. Pažiūrėkite
pavyzdžius:
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo
taip: raidė 'x', raidė 'a'
vieną ar du kartus, raidė 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'xx ! ! xaaax'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo
taip: raidė 'x', raidė 'a'
du kartus ar daugiau, raidė 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'xx xax ! !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo
taip: raidė 'x', raidė 'a'
tris kartus, raidė 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'xx xax xaax !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo
taip: raidė 'a' dešimt kartų:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'aaa ! aaa'
Pavyzdys
Šiame pavyzdyje yra toks šablonas: raidė
'x', raidė 'a' tris kartus ar mažiau,
raidė 'x'. Norint jį įgyvendinti,
prieš skaičių 3
galima nenurodyti skaičiaus, o tiesiog
parašyti kablelį:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! !'
Pavyzdys
Nulis prieš 3 taip pat leistinas:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! !'
Praktinės užduotys
Duota eilutė:
txt = 'aa aba abba abbba abbbba abbbbba'
Parašykite reguliariąją išraišką, kuri ras eilutes
'abba', 'abbba', 'abbbba'
ir tik jas.
Duota eilutė:
txt = 'aa aba abba abbba abbbba abbbbba'
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b'
pasitaiko mažiau nei 3 kartus (imtinai).
Duota eilutė:
txt = 'aa aba abba abbba abbbba abbbbba'
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b'
pasitaiko daugiau nei 4 kartus (imtinai).