Operátory opakování znaků v regulárních výrazech
Existují situace, kdy je třeba určit, že se
znak opakuje daný počet opakování.
Pokud přesný počet opakování není znám,
lze jej prostě napsat několikrát
- 'aaaa'. Ale co dělat, když je potřeba
říci toto: opakovat jednou nebo vícekrát?
K tomu slouží operátory (kvantifikátory)
opakování: plus + (jednou nebo vícekrát),
hvězdička * (nula nebo vícekrát)
a otazník ? (nula nebo jednou).
Tyto operátory působí na znak,
který stojí před nimi.
Podívejme se na práci těchto operátorů na příkladech.
Příklad
Najděte všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' jednou nebo vícekrát,
písmeno 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Výsledek provedení kódu:
'xx ! ! ! xbx'
Příklad
Najděte všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' nula nebo vícekrát,
písmeno 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Výsledek provedení kódu:
'! ! ! ! xbx'
Příklad
Najděte všechny podřetězce podle vzoru písmeno
'x', písmeno 'a' nula nebo jednou,
písmeno 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Výsledek provedení kódu:
'! ! xaax xbx'
Praktické úlohy
Je dán řetězec:
txt = 'aa aba abba abbba abca abea'
Napište regulární výraz, který najde řetězce
'aba', 'abba', 'abbba'
podle vzoru: písmeno 'a', písmeno
'b' libovolný počet opakování, písmeno
'a'.
Je dán řetězec:
txt = 'aa aba abba abbba abca abea'
Napište regulární výraz, který najde řetězce
'aa', 'aba', 'abba',
'abbba' podle vzoru: písmeno
'a', písmeno 'b' libovolný počet opakování
(včetně nulového počtu), písmeno
'a'.
Je dán řetězec:
txt = 'aa aba abba abbba abca abea'
Napište regulární výraz, který najde řetězce
'aa', 'aba' podle vzoru:
písmeno 'a', písmeno 'b' jednou
nebo žádnou, písmeno 'a'.
Je dán řetězec:
txt = 'aa aba abba abbba abca abea'
Napište regulární výraz, který najde řetězce
'aa', 'aba', 'abba',
'abbba', bez zachycení 'abca'
a 'abea'.