Аператары паўтарэння сімвалаў у рэгулярках
Бываюць сітуацыі, калі трэба паказаць, што
сімвал паўтараецца зададзеную колькасць
разоў. Калі дакладная колькасць паўтору невядомая,
то можна проста напісаць яго некалькі разоў
- 'aaaa'. Але што рабіць, калі трэба
сказаць такое: паўтарыць адзін ці больш
разоў?
Для гэтага існуюць аператары (квантифікатары)
паўтарэння: плюс + (адзін і больш
разоў), зорачка * (нуль ці больш
разоў) і пытанне ? (нуль ці адзін раз).
Гэтыя аператары дзейнічаюць на той сімвал,
які стаіць перад імі.
Давайце паглядзім на працу гэтых аператараў на прыкладах.
Прыклад
Знайдзем усе падрадкі па шаблоне літара
'x', літара 'a' адзін ці больш
разоў, літара 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Вынік выканання кода:
'xx ! ! ! xbx'
Прыклад
Знайдзем усе падрадкі па шаблоне літара
'x', літара 'a' нуль ці больш
разоў, літара 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Вынік выканання кода:
'! ! ! ! xbx'
Прыклад
Знайдзем усе падрадкі па шаблоне літара
'x', літара 'a' нуль ці адзін
раз, літара 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Вынік выканання кода:
'! ! xaax xbx'
Практычныя задачы
Дадзены радок:
txt = 'aa aba abba abbba abca abea'
Напішыце рэгулярку, якая знойдзе радкі
'aba', 'abba', 'abbba'
па шаблоне: літара 'a', літара
'b' любую колькасць разоў, літара
'a'.
Дадзены радок:
txt = 'aa aba abba abbba abca abea'
Напішыце рэгулярку, якая знойдзе радкі
'aa', 'aba', 'abba',
'abbba' па шаблоне: літара
'a', літара 'b' любую колькасць
разоў (у тым ліку ні аднаго разу), літара
'a'.
Дадзены радок:
txt = 'aa aba abba abbba abca abea'
Напішыце рэгулярку, якая знойдзе радкі
'aa', 'aba' па шаблоне:
літара 'a', літара 'b' адзін
раз ці ні аднаго, літара 'a'.
Дадзены радок:
txt = 'aa aba abba abbba abca abea'
Напішыце рэгулярку, якая знойдзе радкі
'aa', 'aba', 'abba',
'abbba', не захапіўшы 'abca'
і 'abea'.