Реттік белгілерді қайталау операторлары
Кейбір жағдайларда біз символдың белгілі бір рет қайталанатынын
көрсеткіміз келеді. Егер қайталау саны нақты белгілі болса,
онда оны бірнеше рет жазсақ болады - #aaaa#.
Бірақ егер біз: бір немесе одан да көп рет қайталау
дегіміз келсе не істеу керек?
Бұл үшін (кванторлар) қайталау операторлары бар:
плюс + (бір немесе одан да көп рет),
жұлдызша * (нөл немесе одан да көп рет) және
сұрақ белгісі ? (нөл немесе бір рет).
Бұл операторлар өздерінен алдында тұрған символға әсер етеді.
Осы операторлардың жұмысын мысалдар арқылы қарастырайық.
Мысал
'x' әрпі, 'a' әрпі бір немесе одан да көп рет,
'x' әрпі болатын ішкі жолдарды табайық:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'xx ! ! ! xbx'
Мысал
'x' әрпі, 'a' әрпі нөл немесе одан да көп рет,
'x' әрпі болатын ішкі жолдарды табайық:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! ! ! xbx'
Мысал
'x' әрпі, 'a' әрпі нөл немесе бір рет,
'x' әрпі болатын ішкі жолдарды табайық:
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! xaax xbx'
Практикалық есептер
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abca abea';
?>
'a' әрпі, 'b' әрпі бір немесе одан да көп рет,
'a' әрпі болатын жолдарды табатын
реттік өрнек жазыңыз.
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abca abea';
?>
'a' әрпі, 'b' әрпі нөл немесе одан да көп рет,
'a' әрпі болатын жолдарды табатын
реттік өрнек жазыңыз.
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abca abea';
?>
'a' әрпі, 'b' әрпі бір рет немесе ешқашан,
'a' әрпі болатын жолдарды табатын
реттік өрнек жазыңыз.
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abca abea';
?>
'abca' және 'abea'-ны қоспай,
'aa', 'aba', 'abba',
'abbba' жолдарын табатын реттік өрнек жазыңыз.