PHP Regular Ifodalarida Belgilar To‘plamlari

Belgilar guruhlari \d va \w juda moslashuvchan emas. Hatto barcha harflarni, lekin raqamlarni emas, topish kabi oddiy vazifa ham ular yordamida hal qilinmaydi. Bunday vazifalar uchun YOKI amalini ifodalovchi kvadrat qavslardan foydalanish kerak.

Kvadrat qavslar ichida ko‘rsatilgan har qanday belgidan biri o‘rnini bosadi. Masalan, shu tarzda: #x[abc]x# - biz aytamizki, chekkalarda x harflari turishi kerak, va ichida - bitta belgi: 'a', yoki 'b', yoki 'c'.

Kvadrat qavslardan keyin takrorlash operatorlarini yozish mumkin. Masalan, shu tarzda: #x[abc]+x# - biz aytamizki, x lar ichida 'a', 'b' va 'c' belgilaridan istalgan miqdorda bo‘lishi mumkin - har qanday kombinatsiyada.

Faqat belgilarni sanab o‘tishgina emas, balki ikki belgi orasiga defis qo‘yib, belgilar guruhlarini yaratish mumkin. Masalan, shu tarzda: #[a-d]# - biz 'a' dan 'd' gacha bo‘lgan barcha belgilarni olamiz.

Keling, misollar bilan ko‘ramiz.

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'z' gacha bo‘lgan har qanday harf:

php<?php
  $str = 'xax xbx xcx x@x';
  $res = preg_replace('#x[a-z]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! ! x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'k' gacha bo‘lgan har qanday harf:

php<?php
  $str = 'xax xbx xmx x@x';
  $res = preg_replace('#x[a-k]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! xmx x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'A' dan 'Z' gacha bo‘lgan har qanday harf:

php<?php
  $str = 'xax xBx xcx x@x';
  $res = preg_replace('#x[A-Z]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'xax ! xcx x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 0 dan 9 gacha bo‘lgan har qanday raqam:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[0-9]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'xax ! ! ! x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 3 dan 7 gacha bo‘lgan har qanday raqam:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[3-7]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'xax x1x ! ! x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'z' gacha bo‘lgan har qanday harf yoki 1 dan 9 gacha bo‘lgan raqam:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! ! ! x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'z' gacha bo‘lgan har qanday harf yoki 'A' dan 'Z' gacha bo‘lgan harf:

php<?php
  $str = 'xax xBx xcx x5x x@x';
  $res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! ! x5x x@x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'z' gacha bo‘lgan har qanday harf yoki 1, 2 raqamlari:

php<?php
  $str = 'xax xbx x1x x2x x3x';
  $res = preg_replace('#x[a-z12]x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! ! ! x3x'

Misol

Ushbu misolda qidirish shabloni shunday ko‘rinadi: x lar orasida 'a' dan 'z' gacha bo‘lgan harflar 1 va undan ko‘p miqdorda:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]+x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'xx ! ! ! x123x xa3x'

Misol

Keling, harflar soni nolga teng bo‘lishiga ham ruxsat beraylik:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]*x#', '!', $str);
?>

Natijada o‘zgaruvchiga quyidagilar yoziladi:

php'! ! ! x123x xa3x'

Amaliy vazifalar

Задание 1

Berilgan satr:

php<?php
  $str = 'aba aea aca aza axa';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - 'b', 'e' yoki 'x' harfi.

Задание 2

Berilgan satr:

php<?php
  $str = 'a1a a3a a7a a9a aba';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - 3-lardan 6-largacha bo‘lgan raqam.

Задание 3

Berilgan satr:

php<?php
  $str = 'aba aea afa aha aga';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - a dan g gacha bo‘lgan harf.

Задание 4

Berilgan satr:

php<?php
  $str = 'aba aea afa aha aga';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - a dan f gacha va j dan z gacha bo‘lgan harf.

Задание 5

Berilgan satr:

php<?php
  $str = 'aAa aea aEa aJa a3a';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - a dan f gacha va A dan D gacha bo‘lgan harf.

Задание 6

Berilgan satr:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - kichik lotin harflari, qolganlariga tegmasdan.

Задание 7

Berilgan satr:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - kichik va katta lotin harflari, qolganlariga tegmasdan.

Задание 8

Berilgan satr:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Quyidagi shablonga mos keladigan regular ifodani yozing: chekkalarda 'a' harflari turadi, va ular orasida - kichik lotin harflari va raqamlar, qolganlariga tegmasdan.