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