Белгилар такрорлаш операторлари
Белги белгили бир миқдорда такрорланишини
кўрсатишни истайдиган вазиятлар бўлади.
Агар биз такрорланишнинг аниқ сонини билсак,
унда уни бир неча марта ёзиш мумкин
- #aaaa#. Аммо, агар биз шундай
дейишни истасак: бир ёки бир неча марта
такрорла?
Бунинг учун такрорлаш (квантификаторлар)
операторлари мавжуд: плюс + (бир ёки бир неча марта),
юлдузча * (нол ёки бир неча марта) ва
sавол ? (нол ёки бир марта). Бу
операторлар ўзидан олдин турган белгига
таъсир килади.
Келинг, бу операторларнинг ишини мисолларда кўриб чиқайлик.
Мисол
ҳарф
'x', ҳарф 'a' бир ёки бир неча
марта, ҳарф 'x' намунаси бўйича барча
pastki сатрларни топамиз:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'xx ! ! ! xbx'
Мисол
ҳарф
'x', ҳарф 'a' нол ёки бир неча
марта, ҳарф 'x' намунаси бўйича барча
pastki сатрларни топамиз:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! ! xbx'
Мисол
ҳарф
'x', ҳарф 'a' нол ёки бир
марта, ҳарф 'x' намунаси бўйича барча
pastki сатрларни топамиз:
<?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';
?>
'aa', 'aba', 'abba',
'abbba' сатрларини топадиган, 'abca'
ва 'abea' ни олмайдиган регуляр ифодани ёзинг.