Sümbolite kordusoperaatorid

On olukordi, kus soovime näidata, et sümbol kordub etteantud arv kordi. Kui teame täpset korduste arvu, võime selle lihtsalt mitu korda kirjutada - #aaaa#. Aga mis teha, kui tahame öelda järgmist: korda üks või rohkem korda?

Selleks on olemas (kvantifikaatorid) kordamiseks: pluss + (üks või rohkem korda), tärn * (null või rohkem korda) ja küsimärk ? (null või üks kord). Need operaatorid mõjuvad sümbolile, mis seisab nende ees.

Vaatame nende operaatorite tööd näidete varal.

Näide

Leiame kõik alamstringid mustri järgi täht 'x', täht 'a' üks või rohkem korda, täht 'x':

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

Tulemusena kirjutatakse muutujasse järgmine:

php'xx ! ! ! xbx'

Näide

Leiame kõik alamstringid mustri järgi täht 'x', täht 'a' null või rohkem korda, täht 'x':

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

Tulemusena kirjutatakse muutujasse järgmine:

php'! ! ! ! xbx'

Näide

Leiame kõik alamstringid mustri järgi täht 'x', täht 'a' null või üks kord, täht 'x':

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

Tulemusena kirjutatakse muutujasse järgmine:

php'! ! xaax xbx'

Praktilised ülesanded

Задание 1

Antud string:

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

Kirjutage regulaaravaldis, mis leiab stringid vastavalt mustrile: täht 'a', täht 'b' üks või rohkem korda, täht 'a'.

Задание 2

Antud string:

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

Kirjutage regulaaravaldis, mis leiab stringid vastavalt mustrile: täht 'a', täht 'b' null või rohkem korda, täht 'a'.

Задание 3

Antud string:

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

Kirjutage regulaaravaldis, mis leiab stringid vastavalt mustrile: täht 'a', täht 'b' üks kord või mitte ühtegi, täht 'a'.

Задание 4

Antud string:

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

Kirjutage regulaaravaldis, mis leiab stringid 'aa', 'aba', 'abba', 'abbba', ilma et haaraks 'abca' ja 'abea'.