Chapitre
2 - Le Langage
3) Expression
régulière ou regex
a) Définition
Nommée également Regular Expression
(RegExp), une expression régulière permet de caractériser
le format d'une chaîne de caractère. Plus précisément,
une expression régulière est un motif ou une série
de motifs de caractères comparé à une chaîne
de caractère. Le but étant de rechercher ou de remplacer
un motif dans une chaîne de caractère.
b) Syntaxe
Il y a, avant tout, deux caractères spéciaux qu'il est utile de
connaitre, ils servent à définir le début et la fin d'une chaine
a rechercher, il s'agit de ^ et $ :
Exemple |
Description |
^debut_chaine
|
Chaine commençant par "debut_chaine" |
fin_chaine$ |
Chaine finissant par "fin_chaine" |
^chaine_fixe$
|
Chaine qui commence et qui finis par "chaine_fixe",
il s'agit donc de la chaine au complet |
pattern
" |
Chaine comportant le motif "pattern |
Les Quantificateurs
Ils permettent de définir le "nombre
de fois" qu'un ou plusieurs caractères peuvent se répéter,
mais aussi fixer une limite entre n1 et n2 chiffres.
Symbole |
Description |
Exemple |
Résultat |
* |
0 ou plusieurs occurences |
tx* |
t, tx, txxx ... |
+ |
Une ou plusieurs occurences |
tx+ |
t mais tx, txxx ...
|
? |
0 ou 1 occurence |
tx? |
txx mais t, tx
|
{n} |
n occurences |
tx{2} |
txxx, tx mais txx
|
{n,} |
Au minimum n occurences |
tx{2,} |
tx mais txx, txxxx ...
|
{0,n} |
Au maximum n occurences |
tx{0,2} |
txxx mais txx, tx ...
|
{n1,n2} |
De n1 à n2 occurences compris |
tx{2,3} |
tx, txxxx mais txx, txxx ...
|
Le point
Si vous voulez compter le nombre de caractères
sans spécifier la séquence de caractères, il
suffit de mettre un point :
.{,190}: Chaine contenant
moins de 190 caractères. (Utile pour limiter le nombre de
caractère après un formulaire par exemple)
Opérateur booléen ou
Il est également possible de vouloir une
chaine ou une autre séquence ou caractère à
rechercher. Il faut donc se servir du caractère | (opérateur
booléen ou)
bon(jour|soir) : Chaine
contenant bonjour ou bonsoir.
Les crochets
Les crochets sont utiles pour spécifier
les caractères que vous autorisez dans une chaine
[0-8] : Chiffre de
0 à 8
[web] :Chaine contenant
un w, un e et un b mais pas forcement "web" en entier
Les crochets sont utile aussi pour exclure une
séquence de caractères.
[^0-9] : Exclut les
chaînes contenant des chiffres.
Caractères spéciaux
Il est possible que vous désiez rechercher
dans une chaine les caractères tel que { ou [ ...
Or ils sont dits spéciaux. Il est donc indispensable
de rajouter un antislash devant ces caractères spéciaux.
NB : l'antislash \ étant un caractère
spécial aussi, si vous voulez faire une recherche avec celui-ci,
vous devez rajouter un deuxième \ ce qui donne \\
Voici la liste des caractères spéciaux
: ^ $ ( ) | * + ? { } \ . [ ]
b) Exemples
- Recherche du caractère "a" dans
la chaîne $mot.
<?
$lettre = "a";
if (ereg($lettre,$mot))
{
echo "Le mot $mot
contient la lettre $lettre";
}
?>
- Recherche d'une chaîne de caractère
<?
/* on recherche dans cet exemple
le mot terre dans la chaine $phrase
*/
$mot
= "terre";
if (ereg($mot,$phrase))
{
echo "La phrase $phrase
contient le mot $mot";
}
?>
- La position des caractères pour une recherche
exclusive
Il est possible de retrouver tous les mots/lettres etc situés
en début ou fin de la chaine spécifiée.
Exemple :
"^terre" retrouve toutes
les chaînes commençant pas terre
et
"$terre" retrouve toutes
les chaînes finissant par terre
|