Karaktercsoportok a PHP reguláris kifejezéseiben
Léteznek speciális parancsok, amelyek lehetővé teszik
egész karaktercsoportok kiválasztását. A
\d parancs a 0 és 9 közötti számjegyet jelenti.
A \w parancs számjegyet, latin
betűt vagy aláhúzás jelet jelöl. A \s
parancs szóközt vagy szóköz karaktert jelöl:
szóköz, sortörés, tabulátor. A parancs értéke
megfordítható nagybetűvel: például, ha \d - számjegy,
akkor \D - nem számjegy.
Példa
Keressük meg az összes számjegyet:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'! !! !!!'
Példa
Az ismétlési operátorok a parancsok-csoportokat
egésznek tekintik, azaz a csoportosító zárójelek
nincsenek szükségesek. A következő példában a keresési minta
így néz ki: 0 és 9 közötti számjegy
egy vagy többször:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'! ! ! abc @@@'
Példa
A következő példában a keresési minta így néz ki:
bármi egy vagy többször,
de nem 0 és 9 közötti számjegy:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'123!3!'
Példa
Ebben a példában a keresési minta így néz ki: szóköz karakter egyszer:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'1!12!123!abc!@@@'
Példa
Ebben a példában a keresési minta így néz ki:
NEM szóköz karakter egy vagy többször.
Minden szóközökkel elválasztott részsztring helyére
'!' kerül:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'! ! ! ! !'
Példa
Ebben a példában a keresési minta így néz ki:
számjegy vagy betű egy vagy többször.
Minden, számjegyekből és betűkből álló részsztring
helyére '!' kerül:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Az eredmény a következő lesz a változóban:
'! ! ! ! @@@'
Példa
Ebben a példában a keresési minta így néz ki:
NEM számjegy és NEM betű egy vagy többször.
E definíció szerint esetünkben ebbe beletartozik
'@@@' és minden szóköz (ők ugyanis szintén
nem számjegyek és nem betűk). Figyeljünk oda
arra, hogy a végén egy '!' található - ebbe
alakult át a ' @@@' sztring - az
előtte lévő szóközzel:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Az eredmény a következő lesz a változóban:
'1!12!123!Abc!'
Gyakorlati feladatok
Adott a következő sztring:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük egy számjegy.
Adott a következő sztring:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük tetszőleges számú számjegy.
Adott a következő sztring:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük tetszőleges számú számjegy (beleértve
a nulla számjegyet is, azaz a 'aa' sztringet).
Adott a következő sztring:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Írj reguláris kifejezést, amely megtalálja a következő
formájú sztringeket: a széleken 'a' és
'b' betűk állnak, közöttük - nem
szám.
Adott a következő sztring:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Írj reguláris kifejezést, amely megtalálja a következő
formájú sztringeket: a széleken 'a' és
'b' betűk állnak, közöttük - nem
betű és nem számjegy.
Adott a következő sztring:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Írj reguláris kifejezést, amely minden szóközt
lecserél '!'-ra.