PHP регуляр ифодаларидаги символлар гуруҳлари
Бирламчи символлар гуруҳларини танлаш имконини берадиган
махсус буюруқлар мавжуд. \d буюруғи 0 дан 9 гача рақамни
англатади. \w буюруғи рақам, лотин ҳарфи
ёки астагиш белгисини англатади. \s буюруғи
бошлуқ ёки бошлуқли символни англатади:
бошлуқ, сатр ўтиш, табуляция. Буюруқнинг
қийматини инвертлаш мумкин, катта ҳарф
билан ёзиш орқали: масалан, агар \d - рақам бўлса,
\D - рақам эмас.
Мисол
Келгина, барча рақамларни топайлик:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'! !! !!!'
Мисол
Такрорлаш операторлари буюруқ-гуруҳларни
бир бутун деб ҳисоблайди, яъни гуруҳлаштириш қавслари
зорур эмас. Куйидаги мисолда қидиш намунаси
куйидагича кўринишда: 0 дан 9 гача рақам
бир ёки бир неча марта:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! abc @@@'
Мисол
Куйидаги мисолда қидиш намунаси куриниши
куйидагича: бир ёки бир неча марта ихтиёрий нарса,
лекин 0 дан 9 гача рақам эмас:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'123!3!'
Мисол
Бу мисолда қидиш намунаси куриниши куйидагича: бошлуқли символ бир марта:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'1!12!123!abc!@@@'
Мисол
Бу мисолда қидиш намунаси куриниши куйидагича:
бошлуқли символ ЭМАС бир ёки бир неча марта.
Бошлуқлар билан ажратилган барча қисматоллар алмаштирилади
'!' га:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! ! !'
Мисол
Бу мисолда қидиш намунаси куриниши куйидагича:
рақам ёки ҳарф бир ёки бир неча марта.
Рақамлар ва ҳарфлардан таркиб топган барча қисматоллар
алмаштирилади '!' га:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'! ! ! ! @@@'
Мисол
Бу мисолда қидиш намунаси куриниши куйидагича:
рақам ЭМАС ва ҳарф ЭМАС бир ёки бир неча марта.
Бу аниклашга кура бизнинг ҳолимизда тушувчи
'@@@' ва барча бошлуқлар (улар ҳам
рақамлар эмас ва ҳарфлар эмас). Эътиборанг
юзасидан, якунда битта '!' - унга
' @@@' - олдида бошлуқ билан сатр
аylantirildi:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Натижада ўзгарувчига куйидагилар ёзилади:
'1!12!123!Abc!'
Амалий вазифалар
Сатр берилган:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Регуляр ифода ёзинг, у қайси сатрларни топади,
уларда четларида 'a' ҳарфлари туради,
ва уларнинг ўртасида битта рақам.
Сатр берилган:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Регуляр ифода ёзинг, у қайси сатрларни топади,
уларда четларида 'a' ҳарфлари туради,
ва уларнинг ўртасида ихтиёрий миқдорда рақамлар.
Сатр берилган:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Регуляр ифода ёзинг, у қайси сатрларни топади,
уларда четларида 'a' ҳарфлари туради,
ва уларнинг ўртасида ихтиёрий миқдорда рақамлар (жумладан
ва нол рақам, яъни сатр 'aa').
Сатр берилган:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади
: четларида ҳарфлар туради
'a' ва 'b', ва уларнинг ўртасида -
рақам эмас.
Сатр берилган:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади
: четларида ҳарфлар туради
'a' ва 'b', ва уларнинг ўртасида -
ҳарф эмас ва рақам эмас.
Сатр берилган:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Регуляр ифода ёзинг, у барча бошлуқларни алмаштиради
'!' га.