| 1 |
source : http://www.expreg.com/symbole.php |
|---|
| 2 |
|
|---|
| 3 |
Les Symboles dans les Expressions Régulières |
|---|
| 4 |
|
|---|
| 5 |
Quelques explications sur les différents symboles utilisés dans les expressions régulières. |
|---|
| 6 |
|
|---|
| 7 |
Une des premières choses à réaliser dans la conception d'une expression régulière, c'est de définir le motif (pattern) |
|---|
| 8 |
|
|---|
| 9 |
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. |
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
1) Les caractères littéraux |
|---|
| 13 |
On appelle littéral une valeur qui est écrite exactement comme elle est interprétée. |
|---|
| 14 |
Exemple : |
|---|
| 15 |
|
|---|
| 16 |
Littéraux Signification |
|---|
| 17 |
a correspond à la lettre "a" et rien d'autre |
|---|
| 18 |
chat correspond au mot "chat" et rien d'autre |
|---|
| 19 |
toto correspond au mot "toto" et rien d'autre |
|---|
| 20 |
|
|---|
| 21 |
|
|---|
| 22 |
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é. |
|---|
| 23 |
|
|---|
| 24 |
2) Les symboles de début et fin de chaine et le point . |
|---|
| 25 |
L'accent circonflexe ^ et le symbole dollar $ et enfin le point . |
|---|
| 26 |
|
|---|
| 27 |
Symbole Description |
|---|
| 28 |
^ Indique le début de la chaine - exemple ^chat reconnaît une ligne qui commence par chat |
|---|
| 29 |
$ Indique la fin de la chaine - exemple : chat$ reconnaît une ligne qui finit par chat |
|---|
| 30 |
. Le point indique n'importe quel caractère |
|---|
| 31 |
|
|---|
| 32 |
|
|---|
| 33 |
3) Les symboles quantificateurs |
|---|
| 34 |
Ils sont au nombre de trois : |
|---|
| 35 |
le point d'interrogation (?), l'étoile (*) et le plus (+) |
|---|
| 36 |
|
|---|
| 37 |
Symbole Description |
|---|
| 38 |
* Indique 0, 1 ou plusieurs occurences du caractère ou de la classe précedente |
|---|
| 39 |
+ Indique une ou plusieurs occurences du caractère ou de la classe précedente |
|---|
| 40 |
? Indique 0 ou une occurence du caractère ou de la classe précedente |
|---|
| 41 |
|
|---|
| 42 |
|
|---|
| 43 |
|
|---|
| 44 |
Exemple : |
|---|
| 45 |
a* correspond à aucune ou plusieurs occurences de la lettre (a) |
|---|
| 46 |
soit pas de a, ou a, aa, aaa, aaaa, etc... |
|---|
| 47 |
a+ correspond à une ou plusieurs occurences de la lettre (a) |
|---|
| 48 |
soit au moins un a ou aa, aaa, aaaa, etc... |
|---|
| 49 |
a? correspond à 0 ou une seule occurence de la lettre (a) |
|---|
| 50 |
soit a ou pas de a |
|---|
| 51 |
|
|---|
| 52 |
4) Les intervalles de reconnaissance |
|---|
| 53 |
Ce sont les accolades { } |
|---|
| 54 |
|
|---|
| 55 |
Exemple Signification |
|---|
| 56 |
a{3} correspond exactement à aaa |
|---|
| 57 |
a{2,} correspond à un minimum de deux a consécutifs |
|---|
| 58 |
soit aa, aaa, aaaaa.... |
|---|
| 59 |
a{2,4} correspond uniquement à aa, aaa, aaaa |
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 |
5) Les classes de caractères |
|---|
| 63 |
Délimitées grâce aux crochets [ ] |
|---|
| 64 |
|
|---|
| 65 |
Exemple Signification |
|---|
| 66 |
[..-..] Le tiret représente l'intervalle à l'intérieur de la classe |
|---|
| 67 |
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 [-....] |
|---|
| 68 |
br[iu]n ce qui signifie, trouver br suivi de i ou de u suivi de n comme brun ou brin |
|---|
| 69 |
<h[123456]> exemple de recherche sur une balise de titre |
|---|
| 70 |
<h1> <h2> <h3>, etc... |
|---|
| 71 |
|
|---|
| 72 |
|
|---|
| 73 |
6) Les classes pré-définies |
|---|
| 74 |
|
|---|
| 75 |
Classe Signification |
|---|
| 76 |
[[:alpha:]] n'importe quelle lettre |
|---|
| 77 |
[[:digit:]] n'importe quel chiffre |
|---|
| 78 |
[[:xdigit:]] caractères héxadécimaux |
|---|
| 79 |
[[:alnum:]] n'importe quelle lettre ou chiffre |
|---|
| 80 |
[[:space:]] n'importe quel espace blanc |
|---|
| 81 |
[[:punct:]] n'importe quel signe de ponctuation |
|---|
| 82 |
[[:lower:]] n'importe quelle lettre en minuscule |
|---|
| 83 |
[[:upper:]] n'importe quelle lettre capitale |
|---|
| 84 |
[[:blank:]] espace ou tabulation |
|---|
| 85 |
[[:graph:]] caractères affichables et imprimables |
|---|
| 86 |
[[:cntrl:]] caractères d'échappement |
|---|
| 87 |
[[:print:]] caractères imprimables exceptés ceux de contrôle |
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 |
7) L'alternative, l'intervalle et la classe complémentée |
|---|
| 91 |
Réalisé avec la barre | et le tiret - et l'accent circonflexe ^ à l'intérieur des crochets [ ] |
|---|
| 92 |
La barre verticale | peut également être positionnée entre des parenthèses dans la recherche du motif (voir * dans le tableau exemple) |
|---|
| 93 |
Exemple : |
|---|
| 94 |
|
|---|
| 95 |
Exemple Signification |
|---|
| 96 |
<h[1-6]> intervalle de recherche de 1 à 6 - affichera les balises de titre <h1> <h2> etc... jusque <h6> |
|---|
| 97 |
[0-9] tous les chiffres de 0 à 9, etc... |
|---|
| 98 |
p(ai|i)n la barre verticale détermine une alternative |
|---|
| 99 |
ce qui signifie tout ce qui s'écrit pain ou pin |
|---|
| 100 |
L'alternative dans le motif lui-même |
|---|
| 101 |
^(De|A):@ détermine une alternative dans le motif |
|---|
| 102 |
ce qui signifie tout ce qui commence par De:@ ou A:@ |
|---|
| 103 |
La classe complémentée |
|---|
| 104 |
[^1] classe complémentée ce qui signifie reconnaître tout sauf ce qui est énuméré, ici, tout sauf le chiffre 1 |
|---|
| 105 |
[^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 |
|---|
| 106 |
|
|---|
| 107 |
|
|---|
| 108 |
Tableau récapitulatif |
|---|
| 109 |
|
|---|
| 110 |
. le point n'importe quel caractère |
|---|
| 111 |
[...] classe de caractères tous les caractères énumérés dans la classe |
|---|
| 112 |
[^...] classe complémentée Tous les caractères sauf ceux énumérés |
|---|
| 113 |
^ circonflexe positionne le début de la chaine, la ligne... |
|---|
| 114 |
$ dollar marque la fin d'une chaine, ligne... |
|---|
| 115 |
| barre verticale alternative - ou reconnaît l'un ou l'autre |
|---|
| 116 |
(...) parenthèse utilisée pour limiter la portée d'un masque ou de l'alternative |
|---|
| 117 |
* astérisque 0, 1 ou plusieurs occurences |
|---|
| 118 |
+ le plus 1 ou plusieurs occurence |
|---|
| 119 |
? interrogation 0 ou 1 occurence |
|---|