PHP тұрақты өрнектеріндегі бұйра жақшалар

+, *, ? операторлары жақсы, бірақ олардың көмегімен нақты қайталау санын көрсету мүмкін емес. Бұл жағдайда сізге {} операторы көмекке келеді.

Ол келесідей жұмыс істейді: {5} - бес рет қайталау, {2,5} - екіден беске дейін қайталанады (екеуі де қоса алғанда), {2,} - екі және одан да көп рет қайталанады.

Мысал

Бұл мысалда іздеу шаблоны келесідей: 'x' әрпі, 'a' әрпі бір немесе екі рет, 'x' әрпі:

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

Нәтижесінде айнымалыға мынаны жазады:

php'xx ! ! xaaax'

Мысал

Бұл мысалда іздеу шаблоны келесідей: 'x' әрпі, 'a' әрпі екі рет және одан да көп, 'x' әрпі:

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

Нәтижесінде айнымалыға мынаны жазады:

php'xx xax ! !'

Мысал

Бұл мысалда іздеу шаблоны келесідей: 'x' әрпі, 'a' әрпі үш рет, 'x' әрпі:

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

Нәтижесінде айнымалыға мынаны жазады:

php'xx xax xaax !'

Мысал

Бұл мысалда іздеу шаблоны келесідей: 'a' әрпі он рет:

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

Нәтижесінде айнымалыға мынаны жазады:

php'aaa ! aaa'

Мысал

Бұл мысалда код авторы келесі шаблонды қалаған: 'x' әрпі, 'a' әрпі үз рет және одан аз, 'x' әрпі, бірақ, өкінішке орай, мұндай - {,3} - жұмыс істемейді. Анық көрсету керек:

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

Нәтижесінде айнымалыға мынаны жазады:

php'xx ! ! !'

Мысал

Нөл де рұқсат етілген:

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

Нәтижесінде айнымалыға мынаны жазады:

php'! ! ! !'

Практикалық есептер

Задание 1

Мына жол берілген:

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

'abba', 'abbba', 'abbbba' жолдарын және оларды ғана табатын тұрақты өрнек жазыңыз.

Задание 2

Мына жол берілген:

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

'aba' түріндегі жолдарды табатын тұрақты өрнек жазыңыз, онда 'b' үштен аз (қоса алғанда) ұшырасады.

Задание 3

Мына жол берілген:

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

'aba' түріндегі жолдарды табатын тұрақты өрнек жазыңыз, онда 'b' төрттен көп (қоса алғанда) ұшырасады.