Sümbolite rühmad PHP regulaaravaldistes
On olemas spetsiaalsed käsud, mis võimaldavad
valida korraga terveid sümbolite rühmi. Käsk
\d tähendab numbrit 0 kuni 9.
Käsk \w tähistab numbrit, ladina tähte
või allkriipsu. Käsk \s
tähistab tühikut või tühikulist sümbolit:
tühik, reavahetus, tabeldus. Saate
inverteerida käsuväärtust, kirjutades suure
tähe: näiteks kui \d - number,
siis \D - mitte number.
Näide
Leiame kõik numbrid:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! !! !!!'
Näide
Kordusoperaatorid loevad rühmakäske
ühtseks tervikuks, st grupeerivaid sulge
ei ole vaja. Järgmises näites näeb otsimismust
välja selline: number 0 kuni 9
üks või mitu korda:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! abc @@@'
Näide
Järgmises näites näeb otsimismust välja
nii: ükskõik mis üks või mitu korda,
kuid mitte number 0 kuni 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'123!3!'
Näide
Selles näites näeb otsimismust välja nii: tühikuline sümbol üks kord:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'1!12!123!abc!@@@'
Näide
Selles näites näeb otsimismust välja nii:
MITTE tühikuline sümbol üks või mitu korda.
Kõik tühikutega eraldatud alamjadad asendatakse
märgiga '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! !'
Näide
Selles näites näeb otsimismust välja nii:
number või täht üks või mitu korda.
Kõik numbritest ja tähtedest koosnevad alamjadad
asendatakse märgiga '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! @@@'
Näide
Selles näites näeb otsimismust välja nii:
MITTE number ja MITTE täht üks või mitu korda.
Selle definitsiooni järgi langevad meie puhul
alla string '@@@' ja kõik tühikud (need ju ka
ei ole numbrid ega tähed). Pange tähele
seda, et lõpus on üks '!' - sellesse
muudeti string ' @@@' - koos
eelneva tühikuga:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Tulemusena kirjutatakse muutujasse järgmine:
'1!12!123!Abc!'
Praktilised ülesanded
Antud string:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Kirjutage regulaaravaldis, mis leiab stringid,
milles mõlemal pool on tähed 'a',
ja nende vahel on üks number.
Antud string:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Kirjutage regulaaravaldis, mis leiab stringid,
milles mõlemal pool on tähed 'a',
ja nende vahel on suvaline arv numbreid.
Antud string:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Kirjutage regulaaravaldis, mis leiab stringid,
milles mõlemal pool on tähed 'a',
ja nende vahel on suvaline arv numbreid (kaasa
arvatud ka null number, st string 'aa').
Antud string:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Kirjutage regulaaravaldis, mis leiab stringe
järgmisel kujul: mõlemal pool on tähed
'a' ja 'b', ja nende vahel - mitte
number.
Antud string:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Kirjutage regulaaravaldis, mis leiab stringe
järgmisel kujul: mõlemal pool on tähed
'a' ja 'b', ja nende vahel - mitte
täht ega number.
Antud string:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Kirjutage regulaaravaldis, mis asendab kõik tühikud
märgiga '!'.