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/11-regexp-groups/article.md
+30-30Lines changed: 30 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -252,13 +252,13 @@ Ne seront donc trouvés qu'autant de résultats que besoin, pas plus.
252
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.
253
253
```
254
254
255
-
## Named groups
255
+
## Groupes nommés
256
256
257
-
Remembering groups by their numbers is hard. For simple patterns it's doable, but for more complex ones counting parentheses is inconvenient. We have a much better option: give names to parentheses.
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.
258
258
259
-
That's done by putting `pattern:?<name>` immediately after the opening paren.
259
+
Cela se fait en mettant `pattern:?<name>` immédiatement après la parenthèse ouvrante.
260
260
261
-
For example, let's look for a date in the format "year-month-day":
261
+
Par exemple, recherchons une date au format "year-month-day":
262
262
263
263
```js run
264
264
*!*
@@ -273,11 +273,11 @@ alert(groups.month); // 04
273
273
alert(groups.day); // 30
274
274
```
275
275
276
-
As you can see, the groups reside in the `.groups`property of the match.
276
+
Comme vous pouvez le voir, les groupes figurent dans la propriété `.groups`de la correspondance.
277
277
278
-
To look for all dates, we can add flag`pattern:g`.
278
+
Pour chercher toutes les dates, nous pouvons ajouter le marqueur`pattern:g`.
279
279
280
-
We'll also need `matchAll`to obtain full matches, together with groups:
280
+
Nous aurons aussi besoin de `matchAll`pour obtenir des correspondances complètes, avec les groupes :
281
281
282
282
```js run
283
283
let dateRegexp =/(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g;
@@ -290,16 +290,16 @@ for(let result of results) {
290
290
let {year, month, day} =result.groups;
291
291
292
292
alert(`${day}.${month}.${year}`);
293
-
//first alert: 30.10.2019
293
+
//premier alert: 30.10.2019
294
294
// second: 01.01.2020
295
295
}
296
296
```
297
297
298
-
## Capturing groups in replacement
298
+
## Groupes capturant dans un remplacement
299
299
300
-
Method `str.replace(regexp, replacement)`that replaces all matches with `regexp` in `str` allows to use parentheses contents in the `replacement` string. That's done using`pattern:$n`, where`pattern:n`is the group number.
300
+
La méthode `str.replace(regexp, replacement)`qui remplace dans `str` toutes les correspondances de `regexp`, nous permet d'utiliser le contenu des parenthèses dans la chaîne de `replacement`. Nous utiliserons alors`pattern:$n`, où`pattern:n`correspond au numéro de groupe.
301
301
302
-
For example,
302
+
Par exemple,
303
303
304
304
```js run
305
305
let str ="John Bull";
@@ -308,9 +308,9 @@ let regexp = /(\w+) (\w+)/;
308
308
alert( str.replace(regexp, '$2, $1') ); // Bull, John
309
309
```
310
310
311
-
For named parentheses the reference will be`pattern:$<name>`.
311
+
Pour les parenthèses nommées la référence au groupe se fera avec`pattern:$<name>`.
312
312
313
-
For example, let's reformat dates from "year-month-day" to "day.month.year":
313
+
Par exemple, reformatons les dates depuis le format "year-month-day" vers "day.month.year":
314
314
315
315
```js run
316
316
let regexp =/(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g;
Sometimes we need parentheses to correctly apply a quantifier, but we don't want their contents in results.
326
+
Nous avons parfois besoin de parenthèses pour appliquer correctement un quantificateur, sans avoir besoin de leurs contenu dans les résultats.
327
327
328
-
A group may be excluded by adding `pattern:?:`in the beginning.
328
+
Un groupe peut en être exclu en ajoutant `pattern:?:`au début.
329
329
330
-
For instance, if we want to find `pattern:(go)+`, but don't want the parentheses contents (`go`) as a separate array item, we can write: `pattern:(?:go)+`.
330
+
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)+`.
331
331
332
-
In the example below we only get the name `match:John`as a separate member of the match:
332
+
Dans l'exemple suivant nous obtenons seulement `match:John`comme élément supplémentaire de la correspondance.:
333
333
334
334
```js run
335
335
let str ="Gogogo John!";
336
336
337
337
*!*
338
-
// ?: excludes 'go' from capturing
338
+
// ?: exclu 'go' d'une capture
339
339
let regexp =/(?:go)+ (\w+)/i;
340
340
*/!*
341
341
342
342
let result =str.match(regexp);
343
343
344
-
alert( result[0] ); // Gogogo John (full match)
344
+
alert( result[0] ); // Gogogo John (correspondance entière)
345
345
alert( result[1] ); // John
346
-
alert( result.length ); // 2 (no more items in the array)
346
+
alert( result.length ); // 2 (pas d'autres éléments dans le tableau)
347
347
```
348
348
349
-
## Summary
349
+
## Résumé
350
350
351
-
Parentheses group together a part of the regular expression, so that the quantifier applies to it as a whole.
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.
352
352
353
-
Parentheses groups are numbered left-to-right, and can optionally be named with`(?<name>...)`.
353
+
Les groupes de parenthèses son numérotés de gauche à droite, et peuvent éventuellement être nommés avec`(?<name>...)`.
354
354
355
-
The content, matched by a group, can be obtained in the results:
355
+
Le contenu correspondant à un groupe, peut être obtenu dans les résultats :
356
356
357
-
-The method`str.match`returns capturing groups only without flag`pattern:g`.
-La méthode`str.match`retourne les groupes capturant seulement sans le marqueur`pattern:g`.
358
+
-La méthode`str.matchAll`retourne toujours les groupes capturant.
359
359
360
-
If the parentheses have no name, then their contents is available in the match array by its number. Named parentheses are also available in the property`groups`.
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`.
361
361
362
-
We can also use parentheses contents in the replacement string in `str.replace`: by the number`$n`or the name`$<name>`.
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>`.
363
363
364
-
A group may be excluded from numbering by adding `pattern:?:`in its start. That's used when we need to apply a quantifier to the whole group, but don't want it as a separate item in the results array. We also can't reference such parentheses in the replacement string.
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.
0 commit comments