Karakterkészletek a PHP reguláris kifejezéseiben

A \d és \w karaktercsoportok nem nagyon rugalmasak. Még egy ilyen egyszerű feladat sem, mint az összes betű megkeresése, de nem a számok - nem oldható meg velük. Ilyen feladatokhoz szögletes zárójeleket kell használni, amelyek a VAGY műveletet jelentik.

A szögletes zárójelek egy karaktert helyettesítenek, bármelyiket, amely a zárójelben szerepel. Például így: #x[abc]x# - azt mondjuk, hogy a széleken x betűknek kell állniuk, és középen - egy karakter: vagy 'a', vagy 'b', vagy 'c'.

A szögletes zárójelek után írhatunk ismétlési operátorokat. Például így: #x[abc]+x# - azt mondjuk, hogy az x-ek között lehet bármennyi 'a', 'b' és 'c' karakter - bármilyen kombinációban.

Nem csak felsorolhatunk karaktereket, de létrehozhatunk karaktercsoportokat is, két karakter közé kötőjelet írva. Például így: #[a-d]# - megkapjuk az összes karaktert 'a'-tól 'd'-ig.

Nézzünk példákat.

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'a'-tól 'z'-ig:

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

Az eredmény a következő lesz a változóban:

php'! ! ! x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'a'-tól 'k'-ig:

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

Az eredmény a következő lesz a változóban:

php'! ! xmx x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'A'-tól 'Z'-ig:

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

Az eredmény a következő lesz a változóban:

php'xax ! xcx x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely számjegy 0-tól 9-ig:

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

Az eredmény a következő lesz a változóban:

php'xax ! ! ! x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely számjegy 3-tól 7-ig:

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

Az eredmény a következő lesz a változóban:

php'xax x1x ! ! x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'a'-tól 'z'-ig vagy számjegy 1-től 9-ig:

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

Az eredmény a következő lesz a változóban:

php'! ! ! ! x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'a'-tól 'z'-ig vagy betű 'A'-tól 'Z'-ig:

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

Az eredmény a következő lesz a változóban:

php'! ! ! x5x x@x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között bármely betű 'a'-tól 'z'-ig vagy 1, 2 számjegyek:

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

Az eredmény a következő lesz a változóban:

php'! ! ! ! x3x'

Példa

Ebben a példában a keresési minta így néz ki: az x-ek között 'a'-tól 'z'-ig tartozó betűk 1 vagy több mennyiségben:

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

Az eredmény a következő lesz a változóban:

php'xx ! ! ! x123x xa3x'

Példa

Tegyük meg, hogy a betűk száma lehet nulla is:

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

Az eredmény a következő lesz a változóban:

php'! ! ! x123x xa3x'

Gyakorlati feladatok

Задание 1

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - 'b', 'e' vagy 'x' betű.

Задание 2

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - 3-tól 6-ig tartozó számjegy.

Задание 3

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - a-tól g-ig tartozó betű.

Задание 4

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - a-tól f-ig és j-től z-ig tartozó betű.

Задание 5

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - a-tól f-ig és A-tól D-ig tartozó betű.

Задание 6

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - kis latin betűk, anélkül, hogy a többit érintené.

Задание 7

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - kis és nagy latin betűk, anélkül, hogy a többit érintené.

Задание 8

Adott egy sztring:

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

Írj reguláris kifejezést, amely a következő minta szerint keres: a széleken 'a' betűk állnak, közöttük pedig - kis latin betűk és számjegyek, anélkül, hogy a többit érintené.