Simbolių pasikartojimo operatoriai

Būna situacijų, kai norime nurodyti, kad simbolis kartojamas nurodytą skaičių kartų. Jei žinome tikslų pasikartojimų skaičių, tai galime tiesiog parašyti jį kelis kartus - #aaaa#. Bet ką daryti, jei norime pasakyti taip: pakartoti vieną ar daugiau kartų?

Tam yra (kvantifikatoriai) pasikartojimo operatoriai: pliusas + (vieną ar daugiau kartų), žvaigždutė * (nulis ar daugiau kartų) ir klaustukas ? (nulis ar vieną kartą). Šie operatoriai veikia tą simbolį, kuris stovi prieš juos.

Pažiūrėkime, kaip šie operatoriai veikia pavyzdžiuose.

Pavyzdys

Raskime visas paštoines pagal šabloną raidė 'x', raidė 'a' vieną ar daugiau kartų, raidė 'x':

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

Rezultate į kintamąjį bus įrašyta taip:

php'xx ! ! ! xbx'

Pavyzdys

Raskime visas paštoines pagal šabloną raidė 'x', raidė 'a' nulis ar daugiau kartų, raidė 'x':

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

Rezultate į kintamąjį bus įrašyta taip:

php'! ! ! ! xbx'

Pavyzdys

Raskime visas paštoines pagal šabloną raidė 'x', raidė 'a' nulis ar vieną kartą, raidė 'x':

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

Rezultate į kintamąjį bus įrašyta taip:

php'! ! xaax xbx'

Praktinės užduotys

Задание 1

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes pagal šabloną: raidė 'a', raidė 'b' vieną ar daugiau kartų, raidė 'a'.

Задание 2

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes pagal šabloną: raidė 'a', raidė 'b' nulis ar daugiau kartų, raidė 'a'.

Задание 3

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes pagal šabloną: raidė 'a', raidė 'b' vieną kartą arba nė vieno, raidė 'a'.

Задание 4

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes 'aa', 'aba', 'abba', 'abbba', neperimdama 'abca' ir 'abea'.