Operator za ponavljanje znakova u regularnim izrazima

Dešavaju se situacije kada želimo da naznačimo da se znak ponavlja određeni broj puta. Ako znamo tačan broj ponavljanja, možemo ga jednostavno napisati više puta - #aaaa#. Ali šta da radimo ako želimo da kažemo ovo: ponovi se jedan ili više puta?

Za ovo postoje operatori (kvantifikatori) ponavljanja: plus + (jedan ili više puta), zvezdica * (nula ili više puta) i upitnik ? (nula ili jedan put). Ovi operatori deluju na onaj znak koji stoji ispred njih.

Pogledajmo kako ovi operatori rade na primerima.

Primer

Pronađimo sve podstringove po šablonu slovo 'x', slovo 'a' jedan ili više puta, slovo 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'xx ! ! ! xbx'

Primer

Pronađimo sve podstringove po šablonu slovo 'x', slovo 'a' nula ili više puta, slovo 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! ! ! xbx'

Primer

Pronađimo sve podstringove po šablonu slovo 'x', slovo 'a' nula ili jedan put, slovo 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! xaax xbx'

Praktični zadaci

Задание 1

Data je sledeća string:

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

Napišite regularni izraz koji će pronaći stringove po šablonu: slovo 'a', slovo 'b' jedan ili više puta, slovo 'a'.

Задание 2

Data je sledeća string:

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

Napišite regularni izraz koji će pronaći stringove po šablonu: slovo 'a', slovo 'b' nula ili više puta, slovo 'a'.

Задание 3

Data je sledeća string:

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

Napišite regularni izraz koji će pronaći stringove po šablonu: slovo 'a', slovo 'b' jedan put ili nijedan, slovo 'a'.

Задание 4

Data je sledeća string:

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

Napišite regularni izraz koji će pronaći stringove 'aa', 'aba', 'abba', 'abbba', a da ne uhvati 'abca' i 'abea'.