PHP регуляр ифодаларидаги символлар гуруҳлари

Бирламчи символлар гуруҳларини танлаш имконини берадиган махсус буюруқлар мавжуд. \d буюруғи 0 дан 9 гача рақамни англатади. \w буюруғи рақам, лотин ҳарфи ёки астагиш белгисини англатади. \s буюруғи бошлуқ ёки бошлуқли символни англатади: бошлуқ, сатр ўтиш, табуляция. Буюруқнинг қийматини инвертлаш мумкин, катта ҳарф билан ёзиш орқали: масалан, агар \d - рақам бўлса, \D - рақам эмас.

Мисол

Келгина, барча рақамларни топайлик:

php<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'! !! !!!'

Мисол

Такрорлаш операторлари буюруқ-гуруҳларни бир бутун деб ҳисоблайди, яъни гуруҳлаштириш қавслари зорур эмас. Куйидаги мисолда қидиш намунаси куйидагича кўринишда: 0 дан 9 гача рақам бир ёки бир неча марта:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'! ! ! abc @@@'

Мисол

Куйидаги мисолда қидиш намунаси куриниши куйидагича: бир ёки бир неча марта ихтиёрий нарса, лекин 0 дан 9 гача рақам эмас:

php<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'123!3!'

Мисол

Бу мисолда қидиш намунаси куриниши куйидагича: бошлуқли символ бир марта:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'1!12!123!abc!@@@'

Мисол

Бу мисолда қидиш намунаси куриниши куйидагича: бошлуқли символ ЭМАС бир ёки бир неча марта. Бошлуқлар билан ажратилган барча қисматоллар алмаштирилади '!' га:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'! ! ! ! !'

Мисол

Бу мисолда қидиш намунаси куриниши куйидагича: рақам ёки ҳарф бир ёки бир неча марта. Рақамлар ва ҳарфлардан таркиб топган барча қисматоллар алмаштирилади '!' га:

php<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Натижада ўзгарувчига куйидагилар ёзилади:

php'! ! ! ! @@@'

Мисол

Бу мисолда қидиш намунаси куриниши куйидагича: рақам ЭМАС ва ҳарф ЭМАС бир ёки бир неча марта. Бу аниклашга кура бизнинг ҳолимизда тушувчи '@@@' ва барча бошлуқлар (улар ҳам рақамлар эмас ва ҳарфлар эмас). Эътиборанг юзасидан, якунда битта '!' - унга ' @@@' - олдида бошлуқ билан сатр аylantirildi:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

Натижада ўзгарувчига куйидагилар ёзилади:

php'1!12!123!Abc!'

Амалий вазифалар

Задание 1

Сатр берилган:

php<?php
  $str = 'a1a a2a a3a a4a a5a aba aca';
?>

Регуляр ифода ёзинг, у қайси сатрларни топади, уларда четларида 'a' ҳарфлари туради, ва уларнинг ўртасида битта рақам.

Задание 2

Сатр берилган:

php<?php
  $str = 'a1a a22a a333a a4444a a55555a aba aca';
?>

Регуляр ифода ёзинг, у қайси сатрларни топади, уларда четларида 'a' ҳарфлари туради, ва уларнинг ўртасида ихтиёрий миқдорда рақамлар.

Задание 3

Сатр берилган:

php<?php
  $str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>

Регуляр ифода ёзинг, у қайси сатрларни топади, уларда четларида 'a' ҳарфлари туради, ва уларнинг ўртасида ихтиёрий миқдорда рақамлар (жумладан ва нол рақам, яъни сатр 'aa').

Задание 4

Сатр берилган:

php<?php
  $str = 'avb a1b a2b a3b a4b a5b abb acb';
?>

Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади : четларида ҳарфлар туради 'a' ва 'b', ва уларнинг ўртасида - рақам эмас.

Задание 5

Сатр берилган:

php<?php
  $str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>

Регуляр ифода ёзинг, у куйидаги кўринишдаги сатрларни топади : четларида ҳарфлар туради 'a' ва 'b', ва уларнинг ўртасида - ҳарф эмас ва рақам эмас.

Задание 6

Сатр берилган:

php<?php
  $str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>

Регуляр ифода ёзинг, у барча бошлуқларни алмаштиради '!' га.