Merkkejä toistavat operaattorit

On tilanteita, joissa haluamme osoittaa, että merkki toistuu tietyn määrän kertoja. Jos tiedämme tarkan toistomäärän, voimme yksinkertaisesti kirjoittaa sen useita kertoja - #aaaa#. Mutta mitä tehdä, jos haluamme sanoa jotain tällaista: toista yksi tai useampi kerta?

Tätä varten on olemassa (kvantifioijat) toistoominaisuudet: plus + (yksi tai useampi kerta), tähti * (nolla tai useampi kerta) ja kysymys ? (nolla tai yksi kerta). Nämä operaattorit vaikuttat siihen merkkiin, joka on niiden edessä.

Katsotaanpa näiden operaattoreiden toimintaa esimerkkien avulla.

Esimerkki

Etsitään kaikki alimerkkijonot mallin kirjain 'x', kirjain 'a' yksi tai useampi kerta, kirjain 'x' mukaan:

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'xx ! ! ! xbx'

Esimerkki

Etsitään kaikki alimerkkijonot mallin kirjain 'x', kirjain 'a' nolla tai useampi kerta, kirjain 'x' mukaan:

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! ! xbx'

Esimerkki

Etsitään kaikki alimerkkijonot mallin kirjain 'x', kirjain 'a' nolla tai yksi kerta, kirjain 'x' mukaan:

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! xaax xbx'

Käytännön tehtävät

Задание 1

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot mallin mukaan: kirjain 'a', kirjain 'b' yksi tai useampi kerta, kirjain 'a'.

Задание 2

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot mallin mukaan: kirjain 'a', kirjain 'b' nolla tai useampi kerta, kirjain 'a'.

Задание 3

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot mallin mukaan: kirjain 'a', kirjain 'b' yksi kerta tai ei kertaakaan, kirjain 'a'.

Задание 4

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot 'aa', 'aba', 'abba', 'abbba', olematta sieppaamatta 'abca' ja 'abea'.