Simbolių pasikartojimo operatoriai
Būna situacijų, kai reikia nurodyti, kad
simbolis kartojamas nurodytą skaičių
kartų. Jei tikslus pasikartojimų skaičius nežinomas,
tai galima tiesiog parašyti jį kelis kartus
- 'aaaa'. Bet ką daryti, jei reikia
pasakyti taip: pakartoti vieną ar daugiau
kartų?
Tam yra skirti pasikartojimo operatoriai (kvantifikatoriai):
pliusas + (vienas ar daugiau
kartų), žvaigždutė * (nulis ar daugiau
kartų) ir klaustukas ? (nulis ar vieną kartą).
Šie operatoriai veikia tą simbolį,
kuris yra prieš juos.
Pažiūrėkime, kaip šie operatoriai veikia pavyzdžiuose.
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' vieną ar daugiau
kartų, raidė 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'xx ! ! ! xbx'
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' nulis ar daugiau
kartų, raidė 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! ! ! xbx'
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' nulis ar vieną
kartą, raidė 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Kodo vykdymo rezultatas:
'! ! xaax xbx'
Praktinės užduotys
Duota eilutė:
txt = 'aa aba abba abbba abca abea'
Parašykite reguliariąją išraišką, kuri ras eilutes
'aba', 'abba', 'abbba'
pagal šabloną: raidė 'a', raidė
'b' bet kiek kartų, raidė
'a'.
Duota eilutė:
txt = 'aa aba abba abbba abca abea'
Parašykite reguliariąją išraišką, kuri ras eilutes
'aa', 'aba', 'abba',
'abbba' pagal šabloną: raidė
'a', raidė 'b' bet kiek kartų
(įskaitant ir nulį kartų), raidė
'a'.
Duota eilutė:
txt = 'aa aba abba abbba abca abea'
Parašykite reguliariąją išraišką, kuri ras eilutes
'aa', 'aba' pagal šabloną:
raidė 'a', raidė 'b' vieną
kartą arba nulis kartų, raidė 'a'.
Duota eilutė:
txt = 'aa aba abba abbba abca abea'
Parašykite reguliariąją išraišką, kuri ras eilutes
'aa', 'aba', 'abba',
'abbba', neperimdama 'abca'
ir 'abea'.