Složené závorky v regulárních výrazech Pythonu

Operátory '+', '*', '?' jsou užitečné, ale nelze jimi určit konkrétní počet opakování. V tomto případě vám pomůže operátor {}.

Funguje následovně: {5} - pět opakování, {2,5} – opakuje se dvakrát až pětkrát (včetně obou), {2,} - opakuje se dvakrát a vícekrát. Podívejte se na příklady:

Příklad

V tomto příkladu vypadá vyhledávací vzor takto: písmeno 'x', písmeno 'a' jednou nebo dvakrát, písmeno 'x':

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

print(res)

Výsledek provedení kódu:

python'xx ! ! xaaax'

Příklad

V tomto příkladu vypadá vyhledávací vzor takto: písmeno 'x', písmeno 'a' dvakrát a vícekrát, písmeno 'x':

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

print(res)

Výsledek provedení kódu:

python'xx xax ! !'

Příklad

V tomto příkladu vypadá vyhledávací vzor takto: písmeno 'x', písmeno 'a' třikrát, písmeno 'x':

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

print(res)

Výsledek provedení kódu:

python'xx xax xaax !'

Příklad

V tomto příkladu vypadá vyhledávací vzor takto: písmeno 'a' desetkrát:

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

print(res)

Výsledek provedení kódu:

python'aaa ! aaa'

Příklad

V tomto příkladu existuje takový vzor: písmeno 'x', písmeno 'a' třikrát a méněkrát, písmeno 'x'. Abychom jej realizovali, před číslici 3 lze neuvést číslo, ale jednoduše psát čárku:

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

print(res)

Výsledek provedení kódu:

python'! ! ! !'

Příklad

Nula před 3 je také přípustná:

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

print(res)

Výsledek provedení kódu:

python'! ! ! !'

Praktické úlohy

Задание 1

Je dán řetězec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napište regulární výraz, který najde řetězce 'abba', 'abbba', 'abbbba' a pouze je.

Задание 2

Je dán řetězec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napište regulární výraz, který najde řetězce tvaru 'aba', ve kterých se 'b' vyskytuje méně než 3-krát (včetně).

Задание 3

Je dán řetězec:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Napište regulární výraz, který najde řetězce tvaru 'aba', ve kterých se 'b' vyskytuje více než 4-krát (včetně).