Аператары паўтарэння сімвалаў у рэгулярках
Бываюць сітуацыі, калі мы хочам паказаць,
што сімвал паўтараецца зададзеную колькасць
разоў. Калі мы ведаем дакладную колькасць паўтарэнняў,
то можна проста напісаць яго некалькі разоў
- #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'
.