You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/08-regexp-character-sets-and-ranges/article.md
+12-12Lines changed: 12 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ Plusieurs caractères ou classes de caractères, entourés de crochets `[…]` s
6
6
7
7
Par exemple, `pattern:[eao]` signifie un caractère qui est soit `'a'`, `'e'`, ou `'o'`.
8
8
9
-
On appelle cela un *ensemble*. Les ensembles peuvent être combinés avec d'autres caractères dans une même expression rationnelle :
9
+
On appelle cela un *ensemble*. Les ensembles peuvent être combinés avec d'autres caractères dans une même expression régulière :
10
10
11
11
```js run
12
12
// trouve [t ou m], puis "op"
@@ -22,7 +22,7 @@ L'exemple suivant ne donne donc aucun résultat :
22
22
alert( "Voila".match(/V[oi]la/) ); // null, pas de correspondance
23
23
```
24
24
25
-
L'expression rationnelle recherche :
25
+
L'expression régulière recherche :
26
26
27
27
-`pattern:V`,
28
28
- puis *une* des lettres `pattern:[oi]`,
@@ -50,7 +50,7 @@ Nous pouvons aussi utiliser les classes de caractères entre `[…]`.
50
50
51
51
Par exemple, si nous voulons chercher un caractère alphanumérique, un trait de soulignement `pattern:\w` ou un tiret `pattern:-`, alors l'ensemble s'écrit `pattern:[\w-]`.
52
52
53
-
Il est aussi possible de combiner plusieurs classes, e.g. `pattern:[\s\d]` signifie "un caractère d'espacement ou un chiffre".
53
+
Il est aussi possible de combiner plusieurs classes, p. ex. `pattern:[\s\d]` signifie "un caractère d'espacement ou un chiffre".
54
54
55
55
```smart header="Les classes de caractères sont en fait des racourcis pour des intervalles de caractères particuliers"
56
56
Par exemple:
@@ -62,17 +62,17 @@ Par exemple:
62
62
63
63
### Exemple : \w multi-langue
64
64
65
-
Comme la classe de caractères `pattern:\w` est un raccourcis pour `pattern:[a-zA-Z0-9_]`, il ne peut pas trouver les idéogrammes chinois, ni les lettres cyrilliques, etc.
65
+
Comme la classe de caractères `pattern:\w` est un raccourci pour `pattern:[a-zA-Z0-9_]`, il ne peut pas trouver les idéogrammes chinois, ni les lettres cyrilliques, etc.
66
66
67
-
Nous pouvons écrire un modèle plus universel, pour rechercher le caractère d'un mot quelle que soit la langue. Grâce aux propriétés Unicode, on obtient facilement : `pattern:[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]`.
67
+
Nous pouvons écrire un motif plus universel, pour rechercher le caractère d'un mot quelle que soit la langue. Grâce aux propriétés Unicode, on obtient facilement : `pattern:[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]`.
68
68
69
69
Déchiffrons cela. Tout comme `pattern:\w`, nous construisons notre propre ensemble qui contient les caractères qui portent les propriétés Unicode :
70
70
71
71
-`Alphabetic` (`Alpha`) - pour les lettres,
72
72
-`Mark` (`M`) - pour les accents,
73
73
-`Decimal_Number` (`Nd`) - pour les nombres,
74
74
-`Connector_Punctuation` (`Pc`) - pour le trait de soulignement `'_'` et autres caractères similaires,
75
-
-`Join_Control` (`Join_C`) - deux codes spéciaux `200c` et `200d`, utilisés comme liaisons, e.g. en arabe.
75
+
-`Join_Control` (`Join_C`) - deux codes spéciaux `200c` et `200d`, utilisés comme liaisons, p. ex. en arabe.
76
76
77
77
Exemple d'usage :
78
78
@@ -90,7 +90,7 @@ Cet ensemble est bien sûr encore modifiable : on peut y ajouter ou retirer des
90
90
```warn header="Les propriétés Unicode ne sont pas supportées par IE"
91
91
Les propriétés Unicode `pattern:p{…}` ne sont pas implémentées dans IE. Si nous en avons vraiment besoin, nous pouvons utiliser la librairie [XRegExp](http://xregexp.com/).
92
92
93
-
Ou simplement utiliser des intervalles de caractères dans la langue qui nous intéresse, e.g. `pattern:[а-я]` pour les lettres cyrilliques.
93
+
Ou simplement utiliser des intervalles de caractères dans la langue qui nous intéresse, p. ex. `pattern:[а-я]` pour les lettres cyrilliques.
94
94
```
95
95
96
96
## Intervalles d'exclusion
@@ -124,9 +124,9 @@ Habituellement, lorsque nous cherchons précisément un caractère spécial, nou
124
124
125
125
En d'autres termes, tous les caractères spéciaux ne sont pas échappés, sauf s'ils ont un sens particulier pour un ensemble.
126
126
127
-
Un point `.` à l'intérieur de crochets signifie juste un point. Le modèle`pattern:[.,]` recherche un caractère : soit un point soit une virgule.
127
+
Un point `.` à l'intérieur de crochets signifie juste un point. Le motif`pattern:[.,]` recherche un caractère : soit un point soit une virgule.
128
128
129
-
Dans l'exemple ci-dessous l'expression rationnelle`pattern:[-().^+]` cherche un des caractères `-().^+`:
129
+
Dans l'exemple ci-dessous l'expression régulière`pattern:[-().^+]` cherche un des caractères `-().^+`:
130
130
131
131
```js run
132
132
// Pas besoin d'échapper
@@ -155,9 +155,9 @@ alert( '𝒳'.match(/[𝒳𝒴]/) ); // affiche un caractère étrange qui resse
155
155
// (la recherche n'a pas fonctionné correctement, seule une moitié du caractère est retournée)
156
156
```
157
157
158
-
Le résultat n'est pas celui attendu, car par défaut une expression rationnelle ne reconnait pas une telle paire.
158
+
Le résultat n'est pas celui attendu, car par défaut une expression régulière ne reconnait pas une telle paire.
159
159
160
-
Le moteur d'expression rationnelle pense que `[𝒳𝒴]` -- ne sont pas deux mais quatre caractères :
160
+
Le moteur d'expression régulière pense que `[𝒳𝒴]` -- ne sont pas deux mais quatre caractères :
161
161
1. la moitié gauche de `𝒳``(1)`,
162
162
2. la moitié droite de `𝒳``(2)`,
163
163
3. la moitié gauche de `𝒴``(3)`,
@@ -189,7 +189,7 @@ Si nous oublions le marqueur `pattern:u`, il y aura une erreur :
189
189
190
190
En effet sans le marqueur `pattern:u` une paire de seizets est perçue comme deux caractères distincts, donc `[𝒳-𝒴]` est interprété en `[<55349><56499>-<55349><56500>]` (chacune des paires est remplacée par ses codes). Il est maintenant évident que l'intervalle `56499-55349` n'est pas valide : le premier code `56499` est plus grand que le dernier `55349`. Ce qui explique l'erreur précédente.
191
191
192
-
Avec le marqueur `pattern:u` le modèle est interprété correctement :
192
+
Avec le marqueur `pattern:u` le motif est interprété correctement :
0 commit comments