Skip to content

Commit c7e4a24

Browse files
committed
[WIP]french traduction - regexp.test remain to be translated
1 parent b5b6812 commit c7e4a24

File tree

1 file changed

+63
-62
lines changed

1 file changed

+63
-62
lines changed

9-regular-expressions/17-regexp-methods/article.md

Lines changed: 63 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
# Methodes des Expressions Regulières et des chaînes de caractères
1+
# Methodes des Expressions Rationnelles et des chaînes de caractères
22

3-
Dans cet article, nous aborderons différentes méthodes qui fonctionnent en profondeur avec des expressions regulieres (regexps).
3+
Dans cet article, nous aborderons différentes méthodes qui fonctionnent en profondeur avec des expressions rationnelles (regexps).
44

55

66
## str.match(regexp)
77

8-
La méthode `str.match(regexp)` trouve les correspondances de l'expression reguliere `regexp` dans le texte `str`.
8+
La méthode `str.match(regexp)` trouve les correspondances de l'expression rationnelle `regexp` dans le texte `str`.
99

1010

11-
Elle dispose de 3 modes :
11+
Elle dispose de 3 options :
1212

13-
1. si la regexp n'à pas de marqueur `pattern:g`, alors seul la première correspondance est retournée sous la forme d'un tableau avec le groupe capturé et ses propriétés : index (position de la correspondance), et input (chaîne d'entrée équivalent à str):
13+
1. si la regexp n'à pas de marqueur `pattern:g`, alors seul la première correspondance est retournée sous la forme d'un tableau avec le groupe capturé et ses propriétés : index (indice de la correspondance), et input (chaîne d'entrée équivalent à str):
1414

1515
```js run
1616
let str = "I love JavaScript";
1717

1818
let result = str.match(/Java(Script)/);
1919

20-
alert( result[0] ); // JavaScript (full match)
21-
alert( result[1] ); // Script (first capturing group)
20+
alert( result[0] ); // JavaScript (correspondance exacte)
21+
alert( result[1] ); // Script (premier groupe capturant)
2222
alert( result.length ); // 2
2323

2424
// Additional information:
25-
alert( result.index ); // 7 (match position)
26-
alert( result.input ); // I love JavaScript (source string)
25+
alert( result.index ); // 7 (indice de la chaîne de caractère ou à été trouvée la correspondance)
26+
alert( result.input ); // I love JavaScript (chaîne sur laquelle a été effectuée la recherche)
2727
```
2828

2929
2. Si la `regexp` dispose d'un marqueur `pattern:g`, alors elle retourne un tableau de toutes les correspondances de texte, sans capturer les groupes ou les autres propriétés.
@@ -96,57 +96,57 @@ Si nous utilisons `for..of` pour boucler sur les résultats de `matchAll`, alors
9696

9797
Diviser la chaîne de caractères en utilisant la regexp (ou une sous-chaîne de caractères) comme délimiteur.
9898

99-
Nous pouvons utiliser `split` avec un chaîne de caractères comme ceci :
99+
Nous pouvons utiliser `split` avec une chaîne de caractères comme ceci :
100100

101101
```js run
102102
alert('12-34-56'.split('-')) // array of [12, 34, 56]
103103
```
104104

105-
Mais nous pouvons aussi diviser une chaîne de texte en utilisant une expression regulière:
105+
Mais nous pouvons aussi diviser une chaîne de texte en utilisant une expression rationnelle:
106106

107107
```js run
108108
alert('12, 34, 56'.split(/,\s*/)) // array of [12, 34, 56]
109109
```
110110

111111
## str.search(regexp)
112112

113-
La méthode `str.search(regexp)` renvoie la position du premier motif correspondant, ou `-1` si aucune correspondance n'est trouvée:
113+
La méthode `str.search(regexp)` renvoie l'indice du premier motif correspondant, ou `-1` si aucune correspondance n'est trouvée:
114114

115115
```js run
116116
let str = "A drop of ink may make a million think";
117117
118-
alert( str.search( /ink/i ) ); // 10 (position du premier motif correspondant)
118+
alert( str.search( /ink/i ) ); // 10 (indice du premier motif correspondant)
119119
```
120120

121121
**Limitation importante: `search` renvoie uniquement la première correspondance.**
122122

123-
Si nous avons besoin de la position ou de plus de correspondances, nous devrions utiliser d'autres méthodes, comme les trouver tous avec `str.matchAll(regexp)`.
123+
Si nous avons besoin de l'indice ou de plus de correspondances, nous devrions utiliser d'autres méthodes, comme les trouver tous avec `str.matchAll(regexp)`.
124124

125125
## str.replace(str|regexp, str|func)
126126

127-
This is a generic method for searching and replacing, one of most useful ones. The swiss army knife for searching and replacing.
127+
Il s'agit d'une méthode générique pour chercher et remplacer une chaîne de caractères, l'une des plus utiles. Le couteau suisse pour chercher et remplacer.
128128
129-
We can use it without regexps, to search and replace a substring:
129+
Nous pouvons l'utiliser sans regexps, pour chercher et remplacer une sous-chaîne de caractères:
130130

131131
```js run
132132
// replace a dash by a colon
133133
alert('12-34-56'.replace("-", ":")) // 12:34-56
134134
```
135135

136-
There's a pitfall though.
136+
Toutefois, il y a un piège.
137137

138-
**When the first argument of `replace` is a string, it only replaces the first match.**
138+
**Quand le premier argument de `replace` est une chaîne de caractères, elle ne remplace que la première occurence.**
139139

140-
You can see that in the example above: only the first `"-"` is replaced by `":"`.
140+
Vous pouvez constater dans l'exemple ci-dessous que seul le premier `"-"` est remplacé par `":"`.
141141
142-
To find all hyphens, we need to use not the string `"-"`, but a regexp `pattern:/-/g`, with the obligatory `pattern:g` flag:
142+
Pour trouver tous les traits d'unions, nous devons utiliser non pas le caractère `"-"`, mais une expression rationnelle `pattern:/-/g`, avec obligatoirement le marqueur `pattern:g`;
143143

144144
```js run
145-
// replace all dashes by a colon
145+
// remplace tous les tirets par deux-points
146146
alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
147147
```
148148

149-
The second argument is a replacement string. We can use special character in it:
149+
Le second argument correspond au texte de remplacement. Il est possible d'utiliser des modèles de remplacement spéciaux:
150150
151151
| Symbols | Action in the replacement string |
152152
|--------|--------|
@@ -157,30 +157,30 @@ The second argument is a replacement string. We can use special character in it:
157157
|`$<name>`|inserts the contents of the parentheses with the given `name`, for details see [](info:regexp-groups)|
158158
|`$$`|inserts character `$` |
159159
160-
For instance:
160+
Par exemple:
161161
162162
```js run
163163
let str = "John Smith";
164164

165-
// swap first and last name
165+
// inverser le prénom et nom de famille
166166
alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John
167167
```
168168

169-
**For situations that require "smart" replacements, the second argument can be a function.**
169+
**Si le contexte nécessite un remplacement "intelligent", le second argument peut être une fonction.**
170170

171-
It will be called for each match, and the returned value will be inserted as a replacement.
171+
Elle sera appelée pour chaque correspondance, et la valeur de retour sera insérée comme remplacement.
172172

173-
The function is called with arguments `func(match, p1, p2, ..., pn, offset, input, groups)`:
173+
La fonction est appelée avec des arguments `func(match, p1, p2, ..., pn, offset, input, groups)`:
174174

175-
1. `match` -- the match,
176-
2. `p1, p2, ..., pn` -- contents of capturing groups (if there are any),
177-
3. `offset` -- position of the match,
178-
4. `input` -- the source string,
179-
5. `groups` -- an object with named groups.
175+
1. `match` -- La chaîne de caractère en correspondance,
176+
2. `p1, p2, ..., pn` -- contenu des groupes capturants (s'il y en a),
177+
3. `offset` -- indice de la sous-chaîne correspondante,
178+
4. `input` -- la chaîne de texte initiale,
179+
5. `groups` -- un objet contenant les groupes nommés.
180180

181-
If there are no parentheses in the regexp, then there are only 3 arguments: `func(str, offset, input)`.
181+
Si la regexp ne comporte pas de parenthèses, alors la fonction ne contient que 3 arguments: `func(str, offset, input)`.
182182

183-
For example, let's uppercase all matches:
183+
Par exemple, pour convertir les chaînes de caractères correspondantes en majuscule:
184184

185185
```js run
186186
let str = "html and css";
@@ -190,13 +190,13 @@ let result = str.replace(/html|css/gi, str => str.toUpperCase());
190190
alert(result); // HTML and CSS
191191
```
192192

193-
Replace each match by its position in the string:
193+
Remplace chaque résultat en utilisant son indice dans la chaîne de caractères:
194194

195195
```js run
196196
alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6
197197
```
198198

199-
In the example below there are two parentheses, so the replacement function is called with 5 arguments: the first is the full match, then 2 parentheses, and after it (not used in the example) the match position and the source string:
199+
Dans l'exemple ci-dessous, il y a 2 groupes entre parenthèses. La fonction de remplacement est alors appelée avec 5 arguments: le premier est la correspondance complète, puis chacun des groupes entre parenthèses et enfin (non présent dans l'exemple) l'indice de la correspondance et la chaîne de caractères initiale:
200200

201201
```js run
202202
let str = "John Smith";
@@ -206,7 +206,7 @@ let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, $
206206
alert(result); // Smith, John
207207
```
208208

209-
If there are many groups, it's convenient to use rest parameters to access them:
209+
Si il y a de nombreux groupes entre parenthèses, il peut être pratique d'utiliser les paramètres du reste pour y accéder:
210210

211211
```js run
212212
let str = "John Smith";
@@ -216,7 +216,7 @@ let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`
216216
alert(result); // Smith, John
217217
```
218218

219-
Or, if we're using named groups, then `groups` object with them is always the last, so we can obtain it like this:
219+
Ou, si nous utilisons des groupes nommés, alors l'objet `groups` est toujours placé en dernier, et nous pouvons l'obtenir de cette façon:
220220

221221
```js run
222222
let str = "John Smith";
@@ -230,24 +230,25 @@ let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => {
230230
alert(result); // Smith, John
231231
```
232232

233-
Using a function gives us the ultimate replacement power, because it gets all the information about the match, has access to outer variables and can do everything.
233+
Les fonctions représentent le pouvoir ultime pour effectuer un remplacement. Elles recupèrent toutes les informations des correspondances, ont accès aux variables externes et sont capable de tout faire.
234234

235235
## regexp.exec(str)
236236

237-
The method `regexp.exec(str)` method returns a match for `regexp` in the string `str`. Unlike previous methods, it's called on a regexp, not on a string.
237+
La méthode `regexp.exec(str)` renvoie une correspondance for `regexp` dans la chaîne de caractères `str`. À l'inverse de la méthode précédente, elle est appelée sur une expression rationnelle et non une châine de caractères.
238238

239-
It behaves differently depending on whether the regexp has flag `pattern:g`.
239+
Elle se comporte différement selon que la regexp dispose d'un marqueur `pattern:g` ou non.
240240

241-
If there's no `pattern:g`, then `regexp.exec(str)` returns the first match exactly as `str.match(regexp)`. This behavior doesn't bring anything new.
241+
Si `pattern:g` n'est pas présent, alors `regexp.exec(str)` renvoie la première correspondance tel que le ferait `str.match(regexp)`. Ce comportement n'apporte rien de nouveau.
242242

243-
But if there's flag `pattern:g`, then:
244-
- A call to `regexp.exec(str)` returns the first match and saves the position immediately after it in the property `regexp.lastIndex`.
245-
- The next such call starts the search from position `regexp.lastIndex`, returns the next match and saves the position after it in `regexp.lastIndex`.
246-
- ...And so on.
247-
- If there are no matches, `regexp.exec` returns `null` and resets `regexp.lastIndex` to `0`.
243+
Mais si `pattern:g` est utilisé, alors:
244+
- Un appel à `regexp.exec(str)` renvoie la première correspondance et sauvegarde l'indice situé juste après, accessible via la propriété `regexp.lastIndex`.
245+
- l'appel suivant à la fonction commence la recherche depuis l'indice contenu dans `regexp.lastIndex`. La correspondance suivante est renvoyé et l'indice positionné après est sauvegardé dans `regexp.lastIndex`.
246+
- ...Et ainsi de suite.
247+
- Si aucune correspondance n'est trouvée, `regexp.exec`renvoie `null` et `regexp.lastIndex` est réinitialisé à `0`.
248248

249-
So, repeated calls return all matches one after another, using property `regexp.lastIndex` to keep track of the current search position.
249+
Donc, un appel répété à cette fonction renvoie toutes les correspondances l'une après l'autre, utilisant la propriété `regexp.lastIndex` pour se souvenir de l'indice courant à partir duquel la recherche est effectuée.
250250

251+
Avant que la méthode `str.matchAll` ait été ajoutée à Javascript, des appels à `regexp.exec` étaient utilisés dans une boucle afin d'obtenir toutes les correspondances:
251252
In the past, before the method `str.matchAll` was added to JavaScript, calls of `regexp.exec` were used in the loop to get all matches with groups:
252253

253254
```js run
@@ -258,56 +259,56 @@ let result;
258259

259260
while (result = regexp.exec(str)) {
260261
alert( `Found ${result[0]} at position ${result.index}` );
261-
// Found JavaScript at position 11, then
262+
// Found JavaScript at position 11, puis
262263
// Found javascript at position 33
263264
}
264265
```
265266

266-
This works now as well, although for newer browsers `str.matchAll` is usually more convenient.
267+
Cela fonctionne également très bien, bien que sur les navigateurs les plus récents `str.matchAll` est généralement plus pratique.
267268

268-
**We can use `regexp.exec` to search from a given position by manually setting `lastIndex`.**
269+
**Nous pouvons utiliser `regexp.exec` pour rechercher à partir d'un indice donné en réglant manuellement la valeur de `lastIndex`.**
269270

270-
For instance:
271+
Par exemple:
271272

272273
```js run
273274
let str = 'Hello, world!';
274275

275-
let regexp = /\w+/g; // without flag "g", lastIndex property is ignored
276-
regexp.lastIndex = 5; // search from 5th position (from the comma)
276+
let regexp = /\w+/g; // sans le marqueur "g", la propriété lastIndex est ignorée
277+
regexp.lastIndex = 5; // commence la recherche à partir de la 5ème position (à partir de la virgule)
277278

278279
alert( regexp.exec(str) ); // world
279280
```
280281

281-
If the regexp has flag `pattern:y`, then the search will be performed exactly at the position `regexp.lastIndex`, not any further.
282+
Si la regexp utilise le marqueur `pattern:y`, alors la recherche s'effectuera à l'indice précis de `regexp.lastIndex`, pas plus loin.
282283

283-
Let's replace flag `pattern:g` with `pattern:y` in the example above. There will be no matches, as there's no word at position `5`:
284+
Remplaçons le marqueur `pattern:g` par `pattern:y` dans l'exemple précédent. Aucune correspondance n'est trouvée, car il n'y a aucun mot à l'indice `5`:
284285

285286
```js run
286287
let str = 'Hello, world!';
287288

288289
let regexp = /\w+/y;
289-
regexp.lastIndex = 5; // search exactly at position 5
290+
regexp.lastIndex = 5; // cherche exactement à l'indice 5
290291

291292
alert( regexp.exec(str) ); // null
292293
```
293294

294-
That's convenient for situations when we need to "read" something from the string by a regexp at the exact position, not somewhere further.
295+
C'est pratique dans une situation où nous cherchons uniquement à lire quelque chose au sein d'un texte avec une regexp à un indice spécifique, en occultant le reste.
295296

296297
## regexp.test(str)
297298

298-
The method `regexp.test(str)` looks for a match and returns `true/false` whether it exists.
299+
La méthode `regexp.test(str)` vérifie qu'une correspondance existe et renvoie `true/false` selon le cas.
299300

300-
For instance:
301+
Par exemple:
301302

302303
```js run
303304
let str = "I love JavaScript";
304305

305-
// these two tests do the same
306+
// Ces deux tests réalisent exactement la même chose
306307
alert( *!*/love/i*/!*.test(str) ); // true
307308
alert( str.search(*!*/love/i*/!*) != -1 ); // true
308309
```
309310
310-
An example with the negative answer:
311+
Un exemple avec un retour négatif:
311312
312313
```js run
313314
let str = "Bla-bla-bla";

0 commit comments

Comments
 (0)