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':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'xx ! ! xaaax'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'x', raidė 'a' du kartus ar daugiau, raidė 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'xx xax ! !'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'x', raidė 'a' tris kartus, raidė 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'xx xax xaax !'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'a' dešimt kartų:

pythontxt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'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į:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'! ! ! !'

Pavyzdys

Nulis prieš 3 taip pat leistinas:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)

print(res)

Kodo vykdymo rezultatas:

python'! ! ! !'

Praktinės užduotys

Задание 1

Duota eilutė:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Parašykite reguliariąją išraišką, kuri ras eilutes 'abba', 'abbba', 'abbbba' ir tik jas.

Задание 2

Duota eilutė:

pythontxt = '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).

Задание 3

Duota eilutė:

pythontxt = '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).