Zložené zátvorky v regulárnych výrazoch Python

Operátory '+', '*', '?' sú dobré, avšak pomocou nich nie je možné špecifikovať konkrétny počet opakovaní. V tomto prípade vám pomôže operátor {}.

Funguje nasledovne: {5} - päť opakovaní, {2,5} – opakuje sa od dvoch do piatich (oba vrátane), {2,} - opakuje sa dva a viac krát. Pozrite si príklady:

Príklad

V tomto príklade vyhľadávací vzor vyzerá takto: písmeno 'x', písmeno 'a' jeden alebo dva krát, písmeno 'x':

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

print(res)

Výsledok vykonania kódu:

python'xx ! ! xaaax'

Príklad

V tomto príklade vyhľadávací vzor vyzerá takto: písmeno 'x', písmeno 'a' dva krát a viac, písmeno 'x':

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

print(res)

Výsledok vykonania kódu:

python'xx xax ! !'

Príklad

V tomto príklade vyhľadávací vzor vyzerá takto: písmeno 'x', písmeno 'a' tri krát, písmeno 'x':

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

print(res)

Výsledok vykonania kódu:

python'xx xax xaax !'

Príklad

V tomto príklade vyhľadávací vzor vyzerá takto: písmeno 'a' desať krát:

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

print(res)

Výsledok vykonania kódu:

python'aaa ! aaa'

Príklad

V tomto príklade je takýto vzor: písmeno 'x', písmeno 'a' tri krát a menej, písmeno 'x'. Aby sme ho realizovali, pred číslom 3 nemusíme uvádzať číslo, ale stačí jednoducho napísať čiarku:

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

print(res)

Výsledok vykonania kódu:

python'! ! ! !'

Príklad

Nula pred 3 je tiež prípustná:

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

print(res)

Výsledok vykonania kódu:

python'! ! ! !'

Praktické úlohy

Задание 1

Daný reťazec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napíšte regulárny výraz, ktorý nájde reťazce 'abba', 'abbba', 'abbbba' a len ich.

Задание 2

Daný reťazec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napíšte regulárny výraz, ktorý nájde reťazce tvaru 'aba', v ktorých sa 'b' vyskytuje menej ako 3-krát (vrátane).

Задание 3

Daný reťazec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napíšte regulárny výraz, ktorý nájde reťazce tvaru 'aba', v ktorých sa 'b' vyskytuje viac ako 4-krát (vrátane).