Riestiniai skliaustai PHP reguliariosiose išraiškose

Operatoriai +, *, ? yra geri, tačiau jų pagalba negalima nurodyti konkretų pasikartojimų skaičių. Šiuo atveju jums padės operatorius {}.

Jis veikia taip: {5} - penki pasikartojimai, {2,5} - pasikartoja nuo dviejų iki penkių (abu imtinai), {2,} - pasikartoja du ar daugiau kartų.

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'x', raidė 'a' vieną arba du kartus, raidė 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,2}x#', '!', $str);
?>

Dėlto į kintamąjį bus įrašyta taip:

php'xx ! ! xaaax'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'x', raidė 'a' du kartus ir daugiau, raidė 'x':

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

Dėlto į kintamąjį bus įrašyta taip:

php'xx xax ! !'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'x', raidė 'a' tris kartus, raidė 'x':

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

Dėlto į kintamąjį bus įrašyta taip:

php'xx xax xaax !'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: raidė 'a' dešimt kartų:

php<?php
  $str = 'aaa aaaaaaaaaa aaa';
  $res = preg_replace('#a{10}#', '!', $str);
?>

Dėlto į kintamąjį bus įrašyta taip:

php'aaa ! aaa'

Pavyzdys

Šiame pavyzdyje kodo autorius norėjo tokį šabloną: raidė 'x', raidė 'a' tris kartus ir mažiau, raidė 'x', tačiau, deja, toks - {,3} - neveikia. Reikia nurodyti aiškiai:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,3}x#', '!', $str);
?>

Dėlto į kintamąjį bus įrašyta taip:

php'xx ! ! !'

Pavyzdys

Nulis taip pat leidžiamas:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{0,3}x#', '!', $str);
?>

Dėlto į kintamąjį bus įrašyta taip:

php'! ! ! !'

Praktinės užduotys

Задание 1

Duota eilutė:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Parašykite reguliariąją išraišką, kuri ras eilutes 'abba', 'abbba', 'abbbba' ir tik jas.

Задание 2

Duota eilutė:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Parašykite reguliariąją išraišką, kuri ras eilutes pavidalo 'aba', kuriose 'b' pasitaiko mažiau nei tris kartus (imtinai).

Задание 3

Duota eilutė:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Parašykite reguliariąją išraišką, kuri ras eilutes pavidalo 'aba', kuriose 'b' pasitaiko daugiau nei keturis kartus (imtinai).