Skip to content

Commit bdc26b8

Browse files
committed
article read again
1 parent 7feada9 commit bdc26b8

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

9-regular-expressions/11-regexp-groups/article.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ alert("my@mail.com @ his@site.com.uk".match(regexp)); // my@mail.com, his@site.c
6363

6464
Cette regexp loin d'être parfaite, fonctionne dans une majorité de cas et aide à corriger d'éventuelles fautes de frappes. La seule vérification fiable à 100% pour un email est effectuée par l'envoi d'un courrier.
6565

66-
## Contenus des parenthèses dans la correspondance
66+
## Les contenus de parenthèses dans la correspondance
6767

6868
Les parenthèses sont numérotées de gauche à droite. Le moteur de recherche mémorise le contenu correspondant à chacune d'entre elles et permet d'y accéder dans le résultat.
6969

@@ -93,19 +93,19 @@ alert( tag[1] ); // h1
9393

9494
Les parenthèses peuvent être imbriquées. Dans ce cas la numérotation se fait aussi de gauche à droite.
9595

96-
Par exemple, en effectuant une recherche dans la balise `subject:<span class="my">` nous pourrions est intéressé par :
96+
Par exemple, en effectuant une recherche dans la balise `subject:<span class="my">` nous pourrions être intéressé par :
9797

9898
1. Son contenu complet : `match:span class="my"`.
9999
2. Son nom : `match:span`.
100100
3. Ses attributs : `match:class="my"`.
101101

102-
Ajoutons-leur des parenthèses : `pattern:<(([a-z]+)\s*([^>]*))>`.
102+
Entourons-les de parenthèses : `pattern:<(([a-z]+)\s*([^>]*))>`.
103103

104-
Voici comment ils sont numérotés (gauche à droite, par ordre d'ouverture) :
104+
Voici comment les groupes sont numérotés(de gauche à droite, par ordre d'ouverture des parenthèses) :
105105

106106
![](regexp-nested-groups-pattern.svg)
107107

108-
En action:
108+
Ce qui donne :
109109

110110
```js run
111111
let str = '<span class="my">';
@@ -119,9 +119,9 @@ alert(result[2]); // span
119119
alert(result[3]); // class="my"
120120
```
121121

122-
L'index zero de `result` contient toujours l'entière correspondance.
122+
L'index zero de `result` contient toujours l'entière correspondance, puis les groupes, numérotés de gauche à droite par ordre d'ouverture des parenthèses.
123123

124-
Puis les groupes, numérotés de gauche à droite par ordre d'ouverture des parenthèses. Le premier groupe est retourné comme `result[1]`. Il enferme ici tout le contenu de la balise.
124+
Le premier groupe est retourné par `result[1]`. Il contient ici tout l'intérieur de la balise.
125125

126126
Puis dans `result[2]` se trouve le groupe de la deuxième parenthèse ouvrante `pattern:([a-z]+)` - le nom de balise, puis dans `result[3]` la suite de la balise : `pattern:([^>]*)`.
127127

@@ -148,7 +148,7 @@ alert( match[2] ); // undefined
148148

149149
Le tableau a une longueur de `3`, mais tous les groupes sont vides.
150150

151-
Et voici une correspondance plus complexe pour la chaîne `subject:ac`:
151+
Et voici une correspondance plus complexe avec la chaîne `subject:ac`:
152152

153153
```js run
154154
let match = 'ac'.match(/a(z)?(c)?/)
@@ -164,7 +164,7 @@ La longueur du tableau fixe : `3`. Mais il n'y a rien pour le groupe `pattern:(z
164164
## Rechercher toutes les correspondances avec des groupes : matchAll
165165

166166
```warn header="`matchAll` est une méthode récente, et peut nécessiter un polyfill"
167-
La méthode `matchAll` n'est pas supporté par d'anciens navigateurs.
167+
La méthode `matchAll` n'est pas supportée par d'anciens navigateurs.
168168

169169
Un polyfill peut être requis, comme <https://github.com/ljharb/String.prototype.matchAll>.
170170
```
@@ -190,7 +190,7 @@ Elle a été ajoutée au language JavaScript longtemps après `match`, comme ét
190190
Tout comme `match`, elle cherche des correspondances, mais avec 3 différences :
191191

192192
1. Elle ne retourne pas de tableau, mais un itérateur.
193-
2. Si le marqueur `pattern:g` est present, elle retourne toutes les correspondances en tableau avec les groupes.
193+
2. Si le marqueur `pattern:g` est present, elle retourne toutes les correspondances dans des tableaux avec les groupes.
194194
3. S'il n'y a pas de correspondance, elle ne retourne pas `null`, mais un itérateur vide.
195195

196196
Par exemple :
@@ -203,7 +203,7 @@ alert(results); // [object RegExp String Iterator]
203203

204204
alert(results[0]); // undefined (*)
205205

206-
results = Array.from(results); // let's turn it into array
206+
results = Array.from(results); // convertissons-le en tableau
207207

208208
alert(results[0]); // <h1>,h1 (1st tag)
209209
alert(results[1]); // <h2>,h2 (2nd tag)
@@ -242,19 +242,19 @@ alert( tag1.index ); // 0
242242
alert( tag1.input ); // <h1> <h2>
243243
```
244244

245-
```smart header="Pourquoi le résultat d'un `matchAll` un itérateur, et pas un tableau ?"
245+
```smart header="Pourquoi le résultat d'un `matchAll` est un itérateur et pas un tableau ?"
246246
Pourquoi la méthode est-elle conçue comme cela ? La raison est simple - pour l'optimisation.
247247

248248
L'appel à `matchAll` n'effectue pas la recherche. À la place, il retourne un itérateur, sans résultats préalables. La recherche est lancée à chaque fois que nous l'itérons, par ex. dans une boucle.
249249

250250
Ne seront donc trouvés qu'autant de résultats que besoin, pas plus.
251251

252-
Par ex. il y a 100 correspondances potentielles dans un texte, mais dans une boucle `for..of` nous en trouvons 5, et décidons alors que c'est suffisant et faisons un `break`. Le moteur de recherche ne perdra pas son temps à rechercher les 95 autres correspondances.
252+
Par ex. s'il y a 100 correspondances potentielles dans un texte, mais dans une boucle `for..of` nous en trouvons 5, et décidons alors que c'est suffisant en faisant un `break`. Le moteur de recherche ne perdra pas son temps à rechercher les 95 autres correspondances.
253253
```
254254
255255
## Groupes nommés
256256
257-
Il est difficile de se souvenir de groupes par leur numéro. Bien que faisable pour des motifs simples, cela devient ardu dans des motifs plus complexes. Nous avons une bien meilleure option : nommer les parenthèses.
257+
Il est difficile de se souvenir de groupes par leur numéro. Bien que faisable pour des motifs simples, cela devient ardu dans des motifs plus complexes. Il existe une meilleure option : nommer les parenthèses.
258258
259259
Cela se fait en mettant `pattern:?<name>` immédiatement après la parenthèse ouvrante.
260260
@@ -325,7 +325,7 @@ alert( str.replace(regexp, '$<day>.$<month>.$<year>') );
325325

326326
Nous avons parfois besoin de parenthèses pour appliquer correctement un quantificateur, sans avoir besoin de leurs contenu dans les résultats.
327327

328-
Un groupe peut en être exclu en ajoutant `pattern:?:` au début.
328+
Un groupe peut être exclu des résultats en ajoutant `pattern:?:` au début.
329329

330330
Par exemple, si nous voulons trouver `pattern:(go)+`, sans avoir les contenus des parenthèses (`go`) comme élément du tableau de correspondance, nous pouvons écrire : `pattern:(?:go)+`.
331331

@@ -348,17 +348,17 @@ alert( result.length ); // 2 (pas d'autres éléments dans le tableau)
348348

349349
## Résumé
350350

351-
Les parenthèses regroupent ensemble une partie de l'expression régulière, de telle sorte qu'un quantificateur s'applique à tout cet ensemble.
351+
Les parenthèses regroupent ensemble une partie de l'expression régulière, de telle sorte qu'un quantificateur s'applique à toute cette partie.
352352

353-
Les groupes de parenthèses son numérotés de gauche à droite, et peuvent éventuellement être nommés avec `(?<name>...)`.
353+
Les groupes de parenthèses sont numérotés de gauche à droite et peuvent éventuellement être nommés avec `(?<name>...)`.
354354

355355
Le contenu correspondant à un groupe, peut être obtenu dans les résultats :
356356

357-
- La méthode `str.match` retourne les groupes capturant seulement sans le marqueur `pattern:g`.
357+
- La méthode `str.match` retourne les groupes capturant uniquement en l'absence du marqueur `pattern:g`.
358358
- La méthode `str.matchAll` retourne toujours les groupes capturant.
359359

360-
Si les parenthèses n'ont pas de nom, alors leur contenu est dans le tableau de correspondances par son numéro. Les parenthèses nommées sont disponibles aussi par la propriété `groups`.
360+
Si les parenthèses n'ont pas de nom, alors leur contenu est dans le tableau de correspondances indexé par leur ordre d'ouverture. Les parenthèses nommées sont disponibles aussi par la propriété `groups`.
361361

362-
Nous pouvons aussi utiliser les contenus des parenthèses dans la chaine de remplacement de `str.replace`: par leur numéro `$n` ou leur nom `$<name>`.
362+
Nous pouvons aussi utiliser les contenus des parenthèses dans la chaîne de remplacement de `str.replace`: par leur numéro `$n` ou leur nom `$<name>`.
363363

364-
Un groupe pour être exclu de la numérotation en ajoutant `pattern:?:` à son début. Pour appliquer un quantificateur à groupe entier, sans avoir besoin de cet élément dans les résultats. Nous ne pourrons pas alors y faire référence dans la chaine de remplacement.
364+
Un groupe peut être exclu de la numérotation en ajoutant `pattern:?:` à son début. C'est utile pour appliquer un quantificateur à groupe entier, sans avoir besoin de cet élément dans les résultats. Nous ne pourrons pas non plus y faire référence dans une chaîne de remplacement.

0 commit comments

Comments
 (0)