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
$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:
'! ! ! 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
$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:
'! ! 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
$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:
'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
$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:
'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
$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:
'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
$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:
'! ! ! ! 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
$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:
'! ! ! 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
$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:
'! ! ! ! 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
$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:
'xx ! ! ! x123x xa3x'
Példa
Tegyük meg, hogy a betűk száma lehet nulla is:
<?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:
'! ! ! x123x xa3x'
Gyakorlati feladatok
Adott egy sztring:
<?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ű.
Adott egy sztring:
<?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.
Adott egy sztring:
<?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ű.
Adott egy sztring:
<?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ű.
Adott egy sztring:
<?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ű.
Adott egy sztring:
<?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é.
Adott egy sztring:
<?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é.
Adott egy sztring:
<?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é.