Grupe simbola u regularnim izrazima PHP
Postoje specijalne komande koje omogućavaju
odabir čitavih grupa simbola odjednom. Komanda
\d označava cifru od 0 do 9.
Komanda \w označava cifru, latinično
slovo ili znak donje crte. Komanda \s
označava razmak ili beli prostor (whitespace):
razmak, prelazak u novi red, tabulator. Vrednost
komande se može invertovati pisanjem velikog
slova: na primer, ako je \d cifra,
onda je \D sve osim cifre.
Primer
Hajde da pronadjemo sve cifre:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'! !! !!!'
Primer
Operator ponavljanja tretira grupe komandi
kao jednu celinu, što znači da zagrade za
grupisanje nisu potrebne. U sledećem primeru
šablon pretrage izgleda ovako: cifra od 0 do 9
jedan ili više puta:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'! ! ! abc @@@'
Primer
U sledećem primeru šablon pretrage izgleda
ovako: bilo šta jedan ili više puta,
ali ne cifra od 0 do 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'123!3!'
Primer
U ovom primeru šablon pretrage izgleda ovako: simbol belog prostora jedan put:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'1!12!123!abc!@@@'
Primer
U ovom primeru šablon pretrage izgleda ovako:
NIKO simbol belog prostora jedan ili više puta.
Svi podstringovi, razdvojeni razmacima, biće zamenjeni
sa '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'! ! ! ! !'
Primer
U ovom primeru šablon pretrage izgleda ovako:
cifra ili slovo jedan ili više puta.
Svi podstringovi koji se sastoje od cifara i slova
biće zamenjeni sa '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Kao rezultat, u promenljivu će biti upisano sledeće:
'! ! ! ! @@@'
Primer
U ovom primeru šablon pretrage izgleda ovako:
NIKO cifra i NIKO slovo jedan ili više puta.
Prema ovoj definiciji u našem slučaju spadaju
'@@@' i svi razmaci (jer oni takođe
nisu ni cifre ni slova). Obratite pažnju na
to da na kraju postoji jedna '!' - u nju
je transformisan string ' @@@' - sa
razmakom ispred:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Kao rezultat, u promenljivu će biti upisano sledeće:
'1!12!123!Abc!'
Praktični zadaci
Dat je string:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Napišite regularni izraz koji će pronaći stringove,
u kojima sa obe strane stoje slova 'a',
a između njih je jedna cifra.
Dat je string:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Napišite regularni izraz koji će pronaći stringove,
u kojima sa obe strane stoje slova 'a',
a između njih je bilo koji broj cifara.
Dat je string:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Napišite regularni izraz koji će pronaći stringove,
u kojima sa obe strane stoje slova 'a',
a između njih je bilo koji broj cifara (uključujući
i nulu cifara, odnosno string 'aa').
Dat je string:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Napišite regularni izraz koji će pronaći stringove
sledećeg oblika: sa obe strane stoje slova
'a' i 'b', a između njih - ne
cifra.
Dat je string:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Napišite regularni izraz koji će pronaći stringove
sledećeg oblika: sa obe strane stoje slova
'a' i 'b', a između njih - nije
slovo i nije cifra.
Dat je string:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Napišite regularni izraz koji će zameniti sve razmake
sa '!'.