Nous allons dans cette partie vous donner et vous expliquer les différents symboles utilisés dans les expressions régulières.
Une des premières choses à réaliser dans la conception d’une expression régulière, c’est de définir le motif (pattern en anglais)
Pour construire ces motifs, vous avez besoin de créer une structure formée de caractères littéraux, puis de symboles qui sont définis en tant que métacaractères et délimiteurs et qui seront utilisés séparément ou en combinaison à l’intérieur d’un même groupement ou d’une classe.
Oups, me direz-vous… je suis déjà largué là !
Aucune inquiétude, on va développer le sujet.
1) Les caractères littéraux : On appelle littéral une valeur qui est écrite exactement comme elle est interprétée.
Exemple :
Littéraux | Signification |
|
|
a | correspond à la lettre “a” et rien d’autre |
chat | correspond au mot “chat” et rien d’autre |
toto | correspond au mot “toto” et rien d’autre |
Vous constatez que les littéraux permettent une identification exacte et précise du motif recherché. L’intérêt des expressions régulières ne serait pas bien grand si elles étaient limitées à cette seule possibilité. De plus, pour une recherche simplifiée, une fonction comme strpos() le fera bien plus rapidement qu’un simple preg_match(). Il existe heureusement des symboles spécifiques qui ont un sens plus général et que nous présentons dans la suite de ce cours.
2) Les symboles de début et fin de chaîne et le point .
L’accent circonflexe ^ et le symbole dollar $ et enfin le point .
Symbole | Description |
|
|
^ | Indique le début de la chaîne – exemple ^chat reconnaît une ligne qui commence par chat |
$ | Indique la fin de la chaîne – exemple : chat$ reconnaît une ligne qui finit par chat |
. | Le point indique n’importe quel caractère |
Ces symboles sont des métacaractères : >>> cf -> Qu’est ce qu’un métacaractère ?
3) Les symboles quantificateurs
Ils sont au nombre de trois :
le point d’interrogation (?), l’étoile (*) et le plus (+)
Symbole | Description |
|
|
* | Indique 0, 1 ou plusieurs occurrences du caractère ou de la classe précédente |
+ | Indique une ou plusieurs occurrences du caractère ou de la classe précédente |
? | Indique 0 ou une occurrence du caractère ou de la classe précédente |
Ces symboles sont des métacaractères : >>> cf -> Qu’est ce qu’un métacaractère ?
Bof… oui… mais encore ?
On va travailler avec des exemples, c’est le but du jeu et, selon l’adage, un petit dessin vont mieux qu’un long discours.
Exemple :
a* correspond à aucune ou plusieurs occurrences de la lettre (a)
soit pas de a, ou a, aa, aaa, aaaa, etc…
a+ correspond à une ou plusieurs occurrences de la lettre (a)
soit au moins un a ou aa, aaa, aaaa, etc…
a? correspond à 0 ou une seule occurrence de la lettre (a)
soit a ou pas de a
4) Les intervalles de reconnaissance
Ce sont les accolades { }
Exemple | Signification |
|
|
a{3} | correspond exactement à aaa |
a{2,} | correspond à un minimum de deux a consécutifs soit aa, aaa, aaaaa…. |
a{2,4} | correspond uniquement à aa, aaa, aaaa |
Ces symboles sont des métacaractères : >>> cf -> Qu’est ce qu’un métacaractère ?
5) Les classes de caractères
Délimitées grâce aux crochets [ ]
Exemple | Signification |
|
|
[..-..] | Le tiret représente l’intervalle à l’intérieur de la classe Il s’agit d’un métacaractère s’il est placé dans cette position. Pour permettre sa lecture en tant que caractère “tiret” il convient de le placer en début de la classe comme ceci [-….] |
br[iu]n | ce qui signifie, trouver br suivi de i ou de u suivi de n comme brun ou brin |
<h[123456]> | exemple de recherche sur une balise de titre <h1> <h2> <h3>, etc… |
Ces symboles sont des métacaractères : >>> cf -> Qu’est ce qu’un métacaractère ?
6) Les classes pré-définies
Classe | Signification |
|
|
[[:alpha:]] | n’importe quelle lettre |
[[:digit:]] | n’importe quel chiffre |
[[:xdigit:]] | caractères héxadécimaux |
[[:alnum:]] | n’importe quelle lettre ou chiffre |
[[:space:]] | n’importe quel espace blanc |
[[:punct:]] | n’importe quel signe de ponctuation |
[[:lower:]] | n’importe quelle lettre en minuscule |
[[:upper:]] | n’importe quelle lettre capitale |
[[:blank:]] | espace ou tabulation |
[[:graph:]] | caractères affichables et imprimables |
[[:cntrl:]] | caractères d’échappement |
[[:print:]] | caractères imprimables exceptés ceux de contrôle |
7) L’alternative, l’intervalle et la classe complémentée
Réalisé avec la barre | et le tiret – et l’accent circonflexe ^ à l’intérieur des crochets [ ]
La barre verticale | peut également être positionnée entre des parenthèses dans la recherche du motif (voir * dans le tableau exemple)
Exemple :
Exemple | Signification |
|
|
\<h[1-6]\> | intervalle de recherche de 1 à 6 – affichera les balises de titre <h1> <h2> etc… |
[0-9] | tous les chiffres de 0 à 9, etc… |
|
|
p(ai|i)n | la barre verticale détermine une alternative ce qui signifie tout ce qui s’écrit pain ou pin |
L’alternative dans le motif lui-même | |
^(De|A):@ | détermine une alternative dans le motif ce qui signifie tout ce qui commence par De:@ ou A:@ |
|
|
La classe complémentée | |
[^1] | classe complémentée ce qui signifie reconnaître tout sauf ce qui est énuméré, ici, tout sauf le chiffre 1 |
[^1-6] | classe complémentée ce qui signifie reconnaître tout sauf ce qui est énuméré, ici, tout sauf les chiffres de 1 à 6 |
Ces symboles sont des métacaractères : >>> cf -> Qu’est ce qu’un métacaractère ?
Tableau récapitulatif
. | le point | n’importe quel caractère |
|
||
[…] | classe de caractères | tous les caractères énumérés dans la classe |
|
||
[^…] | classe complémentée | Tous les caractères sauf ceux énumérés |
|
||
^ | circonflexe | positionne le début de la chaîne, la ligne… |
|
||
$ | dollar | marque la fin d’une chaîne, ligne… |
|
||
| | barre verticale | alternative – ou reconnaît l’un ou l’autre |
|
||
(…) | parenthèse | utilisée pour limiter la portée d’un masque ou de l’alternative |
|
||
* | astérisque | 0, 1 ou plusieurs occurrences |
|
||
+ | le plus | 1 ou plusieurs occurrence |
|
||
? | interrogation | 0 ou 1 occurrence |
Et voilà, mon petit… un solide morceau d’avalé !
J’espère juste que votre digestion se fera correctement, maintenant !
N’hésitez surtout pas à revenir sur cette page de manière répétitive, c’est en effet la meilleure manière d’assimiler les symboles et les actions de ceux-ci.
http://www.expreg.com/symbole.php