Grupuri de caractere în expresiile regulate PHP
Există comenzi speciale care permit
selectarea imediată a grupurilor întregi de caractere. Comanda
\d înseamnă o cifră de la 0 la 9.
Comanda \w desemnează o cifră, o literă
latină sau semnul de subliniere. Comanda \s
desemnează un spațiu sau un caracter de spațiu:
spațiu, trecere la linie nouă, tabulare. Se poate
inversa valoarea comenzii, scriind litera
mare: de exemplu, dacă \d este o cifră,
atunci \D înseamnă non-cifră.
Exemplu
Să găsim toate cifrele:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'! !! !!!'
Exemplu
Operatorii de repetare consideră comenzile-grup
ca un întreg, adică parantezele de grupare
nu sunt necesare. În următorul exemplu, șablonul de căutare
arată astfel: cifră de la 0 la 9
unul sau de mai multe ori:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'! ! ! abc @@@'
Exemplu
În următorul exemplu, șablonul de căutare arată
astfel: orice unul sau de mai multe ori,
dar nu cifră de la 0 la 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'123!3!'
Exemplu
În acest exemplu, șablonul de căutare arată astfel: caracter de spațiu o dată:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'1!12!123!abc!@@@'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
caracter NON-spațiu unul sau de mai multe ori.
Toate subșirurile, separate prin spații, vor fi înlocuite
cu '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'! ! ! ! !'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
cifră sau literă unul sau de mai multe ori.
Toate subșirurile, formate din cifre și litere,
vor fi înlocuite cu '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
În rezultat, în variabilă se va scrie următoarele:
'! ! ! ! @@@'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
NON-cifră și NON-literă unul sau de mai multe ori.
În cazul nostru, sub această definiție se încadrează
'@@@' și toate spațiile (ele de asemenea
nu sunt cifre și nici litere). Acordați atenție
faptului că la final este un '!' - în el
s-a transformat șirul ' @@@' - cu
un spațiu în față:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
În rezultat, în variabilă se va scrie următoarele:
'1!12!123!Abc!'
Probleme practice
Este dat șirul:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Scrieți o expresie regulată care va găsi șirurile,
în care la margini sunt literele 'a',
iar între ele o singură cifră.
Este dat șirul:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Scrieți o expresie regulată care va găsi șirurile,
în care la margini sunt literele 'a',
iar între ele orice număr de cifre.
Este dat șirul:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Scrieți o expresie regulată care va găsi șirurile,
în care la margini sunt literele 'a',
iar între ele orice număr de cifre (inclusiv
și zero cifre, adică șirul 'aa').
Este dat șirul:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Scrieți o expresie regulată care va găsi șiruri
de următorul tip: la margini sunt literele
'a' și 'b', iar între ele - nu
un număr.
Este dat șirul:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Scrieți o expresie regulată care va găsi șiruri
de următorul tip: la margini sunt literele
'a' și 'b', iar între ele - nu
o literă și nu o cifră.
Este dat șirul:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Scrieți o expresie regulată care va înlocui toate spațiile
cu '!'.