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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Výsledek provedení kódu:
'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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Výsledek provedení kódu:
'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':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Výsledek provedení kódu:
'xx xax xaax !'
Příklad
V tomto příkladu vypadá vyhledávací vzor
takto: písmeno 'a' desetkrát:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Výsledek provedení kódu:
'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:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Výsledek provedení kódu:
'! ! ! !'
Příklad
Nula před 3 je také přípustná:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Výsledek provedení kódu:
'! ! ! !'
Praktické úlohy
Je dán řetězec:
txt = 'aa aba abba abbba abbbba abbbbba'
Napište regulární výraz, který najde řetězce
'abba', 'abbba', 'abbbba'
a pouze je.
Je dán řetězec:
txt = '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ě).
Je dán řetězec:
txt = '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ě).