Seturi de caractere în expresiile regulate PHP
Grupurile de caractere \d și \w nu sunt
foarte flexibile. Chiar și o sarcină simplă,
ca găsirea tuturor literelor, dar nu a cifrelor -
nu poate fi rezolvată cu ele. Pentru astfel de sarcini
ar trebui utilizate parantezele pătrate, care reprezintă
operația SAU.
Parantezele pătrate înlocuiesc un caracter,
oricare dintre cele enumerate în interior. De exemplu,
așa: #x[abc]x# - spunem că
pe margini trebuie să fie litere x, iar în interior
- un caracter: sau 'a', sau 'b',
sau 'c'.
După parantezele pătrate se pot scrie operatori
de repetare. De exemplu, așa: #x[abc]+x#
- spunem că între x poate fi
orice număr de caractere 'a', 'b'
și 'c' - în orice combinații.
Se pot nu numai enumera caractere, ci și crea
grupuri de caractere, scriind între două caractere
linie de pauză. De exemplu, așa: #[a-d]#
- obținem toate caracterele de la 'a' până la
'd'.
Să vedem câteva exemple.
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'a'
până la 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'a'
până la 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! xmx x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'A'
până la 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'xax ! xcx x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice cifră de la 0 la 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'xax ! ! ! x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice cifră de la 3 la 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'xax x1x ! ! x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'a'
până la 'z' sau cifră de la 1 la 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! ! x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'a'
până la 'z' sau literă de la 'A' până la
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! x5x x@x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x orice literă de la 'a'
până la 'z' sau cifrele 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! ! x3x'
Exemplul
În acest exemplu, șablonul de căutare arată astfel:
între x litere de la 'a' până la 'z'
în cantitate de la 1 și mai mult:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'xx ! ! ! x123x xa3x'
Exemplul
Să facem astfel încât numărul de litere să poată fi și zero:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! x123x xa3x'
Probleme practice
Se dă șirul:
<?php
$str = 'aba aea aca aza axa';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - litera 'b', 'e'
sau 'x'.
Se dă șirul:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - cifră de la 3-lea până la 6.
Se dă șirul:
<?php
$str = 'aba aea afa aha aga';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - literă de la a la g.
Se dă șirul:
<?php
$str = 'aba aea afa aha aga';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - literă de la a la f și de la j la z.
Se dă șirul:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - literă de la a la f și de la A la D.
Se dă șirul:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - litere mici latine,
fără a afecta pe celelalte.
Se dă șirul:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - litere mici și mari latine, fără a afecta pe celelalte.
Se dă șirul:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrieți o expresie regulată care va găsi după următorul
șablon: pe margini stau literele 'a',
iar între ele - litere mici latine
și cifre, fără a afecta pe celelalte.