Фігурныя дужкі ў рэгулярных выразах PHP
Аператары +, *, ? добрыя,
аднак, з іх дапамогай нельга паказаць канкрэтную
колькасць паўтарэнняў. У гэтым выпадку вам на дапамогу
прыйдзе аператар {}.
Працуе ён наступным чынам: {5}
- пяць паўтарэнняў, {2,5} - паўтараецца
ад двух да пяці (абодва ўключна), {2,}
- паўтараецца два і больш разоў.
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
літара 'x', літара 'a' адзін
ці два разы, літара 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'xx ! ! xaaax'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
літара 'x', літара 'a' два
разы і больш, літара 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'xx xax ! !'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
літара 'x', літара 'a' тры
разы, літара 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'xx xax xaax !'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
літара 'a' дзесяць разоў:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'aaa ! aaa'
Прыклад
У гэтым прыкладзе аўтар кода хацеў такі шаблон:
літара 'x', літара 'a' тры
разы разы і менш, літара 'x',
але, на жаль, такое - {,3} - не
працуе. Трэба паказаць явна:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'xx ! ! !'
Прыклад
Нуль таксама дапушчальны:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
У выніку ў зменную запішацца наступнае:
'! ! ! !'
Практычныя задачы
Дадзены радок:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напішыце рэгулярку, якая знойдзе радкі
'abba', 'abbba', 'abbbba'
і толькі іх.
Дадзены радок:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напішыце рэгулярку, якая знойдзе радкі
выгляду 'aba', у якіх 'b' сустракаецца
менш за тры разы (ўключна).
Дадзены радок:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напішыце рэгулярку, якая знойдзе радкі
выгляду 'aba', у якіх 'b' сустракаецца
больш за чатыры разы (ўключна).