АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
⊗ppPmRgRO 224 of 447 menu

Аператары паўтарэння сімвалаў у рэгулярках

Бываюць сітуацыі, калі мы хочам паказаць, што сімвал паўтараецца зададзеную колькасць разоў. Калі мы ведаем дакладную колькасць паўтарэнняў, то можна проста напісаць яго некалькі разоў - #aaaa#. Але што рабіць, калі мы хочам сказаць такое: паўтарыць адзін ці больш раз?

Для гэтага існуюць аператары (квантыфікатары) паўтарэння: плюс + (адзін і больш разоў), зоркачка * (нуль ці больш разоў) і пытанне ? (нуль ці адзін раз). Гэтыя аператары дзейнічаюць на той сімвал, які стаіць перад імі.

Давайце паглядзім на працу гэтых аператараў на прыкладах.

Прыклад

Знайдзем усе падрадкі па шаблоне літара 'x', літара 'a' адзін ці больш разоў, літара 'x':

<?php $str = 'xx xax xaax xaaax xbx'; $res = preg_replace('#xa+x#', '!', $str); ?>

У выніку ў зменную запішацца наступнае:

'xx ! ! ! xbx'

Прыклад

Знайдзем усе падрадкі па шаблоне літара 'x', літара 'a' нуль ці больш разоў, літара 'x':

<?php $str = 'xx xax xaax xaaax xbx'; $res = preg_replace('#xa*x#', '!', $str); ?>

У выніку ў зменную запішацца наступнае:

'! ! ! ! xbx'

Прыклад

Знайдзем усе падрадкі па шаблоне літара 'x', літара 'a' нуль ці адзін раз, літара 'x':

<?php $str = 'xx xax xaax xbx'; $res = preg_replace('#xa?x#', '!', $str); ?>

У выніку ў зменную запішацца наступнае:

'! ! xaax xbx'

Практычныя задачы

Дадзены радок:

<?php $str = 'aa aba abba abbba abca abea'; ?>

Напішыце рэгулярку, якая знойдзе радкі па шаблоне: літара 'a', літара 'b' адзін ці больш разоў, літара 'a'.

Дадзены радок:

<?php $str = 'aa aba abba abbba abca abea'; ?>

Напішыце рэгулярку, якая знойдзе радкі па шаблоне: літара 'a', літара 'b' нуль ці больш разоў, літара 'a'.

Дадзены радок:

<?php $str = 'aa aba abba abbba abca abea'; ?>

Напішыце рэгулярку, якая знойдзе радкі па шаблоне: літара 'a', літара 'b' адзін раз ці ніводнага, літара 'a'.

Дадзены радок:

<?php $str = 'aa aba abba abbba abca abea'; ?>

Напішыце рэгулярку, якая знойдзе радкі 'aa', 'aba', 'abba', 'abbba', не захапіўшы 'abca' і 'abea'.

byenru