PHP-də requlyar ifadələrdə fiqurlu mötərizələr

+, *, ? operatorları yaxşıdır, lakin onların köməyi ilə konkret təkrarlanma sayını göstərmək olmur. Bu halda {} operatoru sizə kömək edəcək.

O, aşağıdakı kimi işləyir: {5} - beş təkrarlanma, {2,5} - ikidən beşə qədər təkrarlanır (hər ikisi daxil olmaqla), {2,} - iki və daha çox dəfə təkrarlanır.

Nümunə

Bu nümunədə axtarış şablonu belə görünür: hərf 'x', hərf 'a' bir və ya iki dəfə, hərf 'x':

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'xx ! ! xaaax'

Nümunə

Bu nümunədə axtarış şablonu belə görünür: hərf 'x', hərf 'a' iki dəfə və daha çox, hərf 'x':

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'xx xax ! !'

Nümunə

Bu nümunədə axtarış şablonu belə görünür: hərf 'x', hərf 'a' üç dəfə, hərf 'x':

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'xx xax xaax !'

Nümunə

Bu nümunədə axtarış şablonu belə görünür: hərf 'a' on dəfə:

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'aaa ! aaa'

Nümunə

Bu nümunədə kodun müəllifi belə bir şablon istəyirdi: hərf 'x', hərf 'a' üç dəfə və daha az, hərf 'x', amma təəssüf ki, bu - {,3} - işləmir. Açıq şəkildə göstərmək lazımdır:

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'xx ! ! !'

Nümunə

Sıfır da icazəlidir:

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

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! ! ! !'

Praktiki tapşırıqlar

Задание 1

Sətir verilmişdir:

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

'abba', 'abbba', 'abbbba' sətirlərini və yalnız onları tapan requlyar ifadə yazın.

Задание 2

Sətir verilmişdir:

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

'aba' tipli, 'b'-nin üç dəfədən az (daxil olmaqla) rast gəlinən sətirləri tapan requlyar ifadə yazın.

Задание 3

Sətir verilmişdir:

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

'aba' tipli, 'b'- nin dörd dəfədən çox (daxil olmaqla) rast gəlinən sətirləri tapan requlyar ifadə yazın.