Оператори за повторение на символи в регулярни изрази
Има ситуации, в които искаме да укажем,
че символът се повтаря зададен брой пъти.
Ако знаем точния брой повторения,
можем просто да го напишем няколко пъти
- #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'.