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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'xx xax xaax !'
Nümunə
Bu nümunədə axtarış şablonu belə görünür:
hərf 'a' on dəfə:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'xx ! ! !'
Nümunə
Sıfır da icazəlidir:
<?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:
'! ! ! !'
Praktiki tapşırıqlar
Sətir verilmişdir:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'abba', 'abbba', 'abbbba'
sətirlərini və yalnız onları tapan requlyar ifadə yazın.
Sətir verilmişdir:
<?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.
Sətir verilmişdir:
<?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.