Skip to content

Commit 3565c17

Browse files
committed
refactor: fixes merge conflicts, translates pending content and applies suggestions according to code review
1 parent 04f88aa commit 3565c17

File tree

1 file changed

+43
-44
lines changed

1 file changed

+43
-44
lines changed

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

+43-44
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ O método `str.macth(regexp)` pesquisa correspondências para `regexp` na string
88

99
Possui 3 modos:
1010

11-
1. Se a `regexp` não tiver a flag `padrão:g`, ela retornará a primeira correspondência como uma matriz com a captura de grupos e propriedades `index` (posição da correspondência), `input` (string de entrada, igual a `str`):
11+
1. Se a `regexp` não tiver a flag `pattern:g`, ela retornará a primeira correspondência como uma matriz com a captura de grupos e propriedades `index` (posição da correspondência), `input` (string de entrada, igual a `str`):
1212

1313
```js run
1414
let str = "Eu amo JavaScript";
@@ -24,7 +24,7 @@ Possui 3 modos:
2424
alert( result.input ); // Eu amo JavaScript (string original)
2525
```
2626

27-
2. Se a `regexp` tiver a flag `padrão:g`, ela retornará uma matriz com todas as correspondências como strings, sem capturar grupos e outros detalhes.
27+
2. Se a `regexp` tiver a flag `pattern:g`, ela retornará uma matriz com todas as correspondências como strings, sem capturar grupos e outros detalhes.
2828
```js run
2929
let str = "Eu amo JavaScript";
3030
@@ -34,7 +34,7 @@ Possui 3 modos:
3434
alert( result.length ); // 1
3535
```
3636

37-
3. Se não houver correspondências, não importa se há flag `padrão:g` ou não, `null` é retornado.
37+
3. Se não houver correspondências, não importa se há flag `pattern:g` ou não, `null` é retornado.
3838

3939
Essa é uma nuance importante. Se não há correspondências, não teremos uma matriz vazia, mas `null`. É fácil de cometer um erro esquecendo disso, por exemplo:
4040

@@ -44,7 +44,7 @@ Possui 3 modos:
4444
let result = str.match(/HTML/);
4545
4646
alert(result); // null
47-
alert(result.length); // Error: Cannot read property 'length' of null (Erro: Não é possivel ler a propriedade 'length' de null)
47+
alert(result.length); // Error: Cannot read property 'length' of null (Erro: Não é possível ler a propriedade 'length' de null)
4848
```
4949

5050
Se desejamos que o resultado seja uma matriz, podemos escrever assim:
@@ -55,7 +55,7 @@ Possui 3 modos:
5555

5656
## str.matchAll(regexp)
5757

58-
[navegador recente="new"]
58+
[recent browser="new"]
5959

6060
O método `str.matchAll(regexp)` é uma "nova, melhorada" variante do `str.match`.
6161

@@ -64,7 +64,7 @@ O método `str.matchAll(regexp)` é uma "nova, melhorada" variante do `str.match
6464
Existem 3 diferenças em relação ao `match`:
6565

6666
1. Ela retorna um objeto iterável com correspondências em vez de uma matriz. Podemos fazer dele uma matriz regular usando `Array.from`.
67-
2. Cada correspondência é retornada como uma matriz com grupos de captura (o mesmo formato que `str.match` sem a flag `padrão:g`).
67+
2. Cada correspondência é retornada como uma matriz com grupos de captura (o mesmo formato que `str.match` sem a flag `pattern:g`).
6868
3. Se não houver resultados, não retornará `null`, mas um objeto iterável vazio.
6969

7070
Exemplo de uso:
@@ -86,7 +86,7 @@ alert( firstMatch.index ); // 0
8686
alert( firstMatch.input ); // <h1>Olá, mundo!</h1>
8787
```
8888

89-
Se usarmos `for..of` para repetir as correspondências do `matchAll`, então não precisaremos mais do `Array.from`.
89+
Se usarmos `for..of` para percorrer as correspondências do `matchAll`, então não precisaremos mais do `Array.from`.
9090

9191
## str.split(regexp|substr, limit)
9292

@@ -98,7 +98,7 @@ Podemos usar `split` com strings, desse jeito:
9898
alert('12-34-56'.split('-')) // matriz de ['12', '34', '56']
9999
```
100100

101-
Mas podemos dividir por uma expressão regular, do mesmo modo:
101+
Mas podemos dividir com uma expressão regular, do mesmo modo:
102102

103103
```js run
104104
alert('12, 34, 56'.split(/,\s*/)) // matriz de ['12', '34', '56']
@@ -116,11 +116,11 @@ alert( str.search( /tinta/i ) ); // 12 (posição da primeira correspondência)
116116

117117
**A importante limitação: `search` apenas encontra a primeira correspondência.**
118118

119-
Se precisarmos de posições de correspondências mais distantes, devemos usar outros meios, como encontrar todos eles com `str.matchAll(regexp)`.
119+
Se precisarmos de posições de correspondências mais distantes, devemos usar outros meios, como encontrar todos elas com `str.matchAll(regexp)`.
120120

121121
## str.replace(str|regexp, str|func)
122122

123-
Esse é um método genério para buscar e substituir, um dos mais úteis. O canivete suíço para procurar e substituir.
123+
Esse é um método genérico para buscar e substituir, um dos mais úteis. O canivete suíço para procurar e substituir.
124124

125125
Podemos usá-lo sem regexps, para buscar e substituir uma substring:
126126

@@ -129,17 +129,17 @@ Podemos usá-lo sem regexps, para buscar e substituir uma substring:
129129
alert('12-34-56'.replace("-", ":")) // 12:34-56
130130
```
131131

132-
No entanto há uma armadilha.
132+
No entanto, há uma armadilha.
133133

134134
**Quando o primeiro argumento do `replace` é uma string, ele apenas substitui a primeira correspondência**
135135

136136
Você pode ver isso no exemplo acima: apenas o primeiro `"-"` é substituído por `":"`.
137137

138-
Para encontrar todos os hífens, não precisamos usar a string `"-"`, mas a regexp `padrão:/-/g`, com a flag obrigatória `padrão:g`:
138+
Para encontrar todos os hífens, não precisamos usar a string `"-"`, mas a regexp `pattern:/-/g`, com a flag obrigatória `pattern:g`:
139139

140140
```js run
141141
// substitui todos os hífens por um dois-pontos
142-
alert( '12-34-56'.replace( /-/g, ":" ) ) // 12:34:56
142+
alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
143143
```
144144

145145
O segundo argumento é uma string substituta. Podemos usar caracteres especiais:
@@ -164,7 +164,7 @@ alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John
164164

165165
**Para situações que exigem "inteligentes" substituições, o segundo argumento pode ser uma função**
166166

167-
Isso será chamado para cada correspondência e o valor retornado será inserido como uma substituição.
167+
Ela será chamada para cada correspondência e o valor retornado será inserido como uma substituição.
168168

169169
A função é chamada com argumentos `func(match, p1, p2, ..., pn, offset, input, groups)`:
170170

@@ -174,7 +174,7 @@ A função é chamada com argumentos `func(match, p1, p2, ..., pn, offset, input
174174
4. `input` -- a string original,
175175
5. `groups` -- um objeto com grupos nomeados.
176176

177-
Se não existem parênteses na regexp, terá apenas 3 argumentos: `func(str, offset, input)`.
177+
Se não existirem parênteses na regexp, terá apenas 3 argumentos: `func(str, offset, input)`.
178178

179179
Por exemplo, vamos colocar todas as correspondências em maiúsculas:
180180

@@ -192,7 +192,7 @@ Substituir cada correspondência pela sua posição na string:
192192
alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6
193193
```
194194

195-
No exemplo abaixo, existem dois parênteses, então a função de substituição é chamada com 5 argumentos: o primeiro é a correspondência completa, em seguida, 2 parênteses, e depois dele (não usado no exemplo) a posição da correspondência e a string original:
195+
No exemplo abaixo, existem dois parênteses, então a função de substituição é chamada com 5 argumentos: o primeiro é a correspondência completa, em seguida, 2 parênteses, e depois disso (não usado no exemplo) a posição da correspondência e a string original:
196196

197197
```js run
198198
let str = "John Smith";
@@ -202,7 +202,7 @@ let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, $
202202
alert(result); // Smith, John
203203
```
204204

205-
Se existirem muitos grupos, é conveniente usar os parâmetros de descanso para acessá-los:
205+
Se existirem muitos grupos, é conveniente usar os parâmetros *rest* para acessá-los:
206206

207207
```js run
208208
let str = "John Smith";
@@ -212,7 +212,7 @@ let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`
212212
alert(result); // Smith, John
213213
```
214214

215-
Ou, se usarmos grupos nomeados, o objeto `groups` com eles é sempre o último, para que possamos obtê-los assim:
215+
Ou, se usarmos grupos nomeados, o objeto `groups` com eles é sempre o último, para podermos obtê-los assim:
216216

217217
```js run
218218
let str = "John Smith";
@@ -226,36 +226,35 @@ let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => {
226226
alert(result); // Smith, John
227227
```
228228

229-
O uso de uma função nos dá o poder de substituição definitivo, porque obtém todas as informações sobre a correspondência, tem a variáveis externas e pode fazer tudo.
229+
O uso de uma função nos dá o poder de substituição definitivo, porque ela obtém todas as informações sobre a correspondência, tem acesso a variáveis externas e pode fazer tudo.
230230

231231
## str.replaceAll(str|regexp, str|func)
232232

233-
This method is essentially the same as `str.replace`, with two major differences:
233+
Este método é essencialmente o mesmo que `str.replace`, com duas diferenças principais:
234234

235-
1. If the first argument is a string, it replaces *all occurrences* of the string, while `replace` replaces only the *first occurrence*.
236-
2. If the first argument is a regular expression without the `g` flag, there'll be an error. With `g` flag, it works the same as `replace`.
235+
1. Se o primeiro argumento for uma string, ele substitui *todas as ocorrências* da string, enquanto `replace` substitui apenas a *primeira ocorrência*.
236+
2. Se o primeiro argumento for uma expressão regular sem a flag `g`, haverá um erro. Com a flag `g`, funciona da mesma forma que `replace`.
237237

238-
The main use case for `replaceAll` is replacing all occurrences of a string.
238+
O principal caso de uso de `replaceAll` é substituir todas as ocorrências de uma string.
239239

240-
Like this:
240+
Assim:
241241

242242
```js run
243-
// replace all dashes by a colon
243+
// substitui todos os traços por dois pontos
244244
alert('12-34-56'.replaceAll("-", ":")) // 12:34:56
245245
```
246246

247-
248247
## regexp.exec(str)
249248

250249
O método `regexp.exec(str)` retorna uma correspondência para `regexp` na string `str`. Ao contrário dos métodos anteriores, é chamado numa regexp, não em uma string.
251250

252-
Se comporta de modo diferente dependendo se a regexp possui a flag `padrão:g`.
251+
Se comporta de modo diferente dependendo se a regexp possui a flag `pattern:g`.
253252

254-
Se não houver `padrão:g`, a `regexp.exec(str)` retorna a primeira correspondência exatamente como `str.match(regexp)`. Esse comportamento não traz nada de novo.
253+
Se não houver `pattern:g`, a `regexp.exec(str)` retorna a primeira correspondência exatamente como `str.match(regexp)`. Esse comportamento não traz nada de novo.
255254

256-
Mas se houver a flag `padrão:g`, então:
255+
Mas se houver a flag `pattern:g`, então:
257256
- A chamada para `regexp.exec(str)` retorna a primeira correspondência e salva a posição imediatamente após ela na propriedade `regexp.lastIndex`.
258-
- A próxima chamada inicia a pesquisa na posição `regexp.lastIndex`, retorna a próxima correspondência e salva a posição após elas em `regexp.lastIndex`.
257+
- A próxima chamada inicia a pesquisa na posição `regexp.lastIndex`, retorna a próxima correspondência e salva a posição após ela em `regexp.lastIndex`.
259258
- ...e assim por diante.
260259
- Se não houver correspondências, `regexp.exec` retorna `null` e reinicia `regexp.lastIndex` para `0`.
261260

@@ -276,60 +275,60 @@ while (result = regexp.exec(str)) {
276275
}
277276
```
278277

279-
Isso funciona bem agora, no entanto para navegadores novos `str.matchAll` é usualmente mais conveniente.
278+
Isso também funciona agora, no entanto, para navegadores novos `str.matchAll` é usualmente mais conveniente.
280279

281-
**Podemos usar `regexp.exec` para buscar de uma posição dada, configurando manualmente `lastIndex`.**
280+
**Podemos usar `regexp.exec` para buscar a partir de uma posição dada, configurando manualmente `lastIndex`.**
282281

283282
Por exemplo:
284283

285284
```js run
286285
let str = 'Olá, mundo!';
287286
288-
let regexp = /\w+/g; // sem a flag "g", propriedade lastIndex é ignorada
289-
regexp.lastIndex = 3; // pesquisa a partir da posição (a partir da vírgula)
287+
let regexp = /\w+/g; // sem a flag "g", a propriedade lastIndex é ignorada
288+
regexp.lastIndex = 5; // pesquisa a partir da posição (a partir da vírgula)
290289
291290
alert( regexp.exec(str) ); // mundo
292291
```
293292

294-
Se o regexp tiver flag `padrão:y`, então a pesquisa será realizada exatamente na posição `regexp.lastIndex`, nada mais.
293+
Se a regexp tiver flag `pattern:y`, então a pesquisa será realizada exatamente na posição `regexp.lastIndex`, e não mais adiante.
295294

296-
Vamos substituir a flag `padrão:g` pela `padrão:y` no exemplo acima. Não haverá correspondências, como não haverá palavra na posição `3`:
295+
Vamos substituir a flag `pattern:g` pela `pattern:y` no exemplo acima. Não haverá correspondências, como não haverá palavra na posição `5`:
297296

298297
```js run
299298
let str = 'Olá, mundo!';
300299
301300
let regexp = /\w+/y;
302-
regexp.lastIndex = 3; // pesquisa exatamente na posição 5
301+
regexp.lastIndex = 5; // pesquisa exatamente na posição 5
303302
304303
alert( regexp.exec(str) ); // null
305304
```
306305

307-
Isso é conveniente para situações em que precisamos "ler" algo da string por uma regexp nessa posição exata, não em outro lugar.
306+
Isso é conveniente para situações em que precisamos de "ler" algo da string por uma regexp nessa posição exata, não em outro lugar.
308307

309308
## regexp.test(str)
310309

311-
O método `regex.test(str)` procura por uma correspondência e retorna `true/false` se existe.
310+
O método `regex.test(str)` procura por uma correspondência e retorna `true/false`, em conformidade.
312311

313312
Por exemplo:
314313

315314
```js run
316315
let str = "Eu amo JavaScript";
317316
318317
// esses dois testes fazem o mesmo
319-
alert( /amo/i.test(str) ); // true
320-
alert( str.search(/amo/i) != -1 ); // true
318+
alert( *!*/amo/i*/!*.test(str) ); // true
319+
alert( str.search(*!*/amo/i*/!*) != -1 ); // true
321320
```
322321

323322
Um exemplo com a resposta negativa:
324323

325324
```js run
326325
let str = "Bla-bla-bla";
327326
328-
alert( /amo/i.test(str) ); // false
329-
alert( str.search(/love/i) != -1 ); // false
327+
alert( *!*/amo/i*/!*.test(str) ); // false
328+
alert( str.search(*!*/amo/i*/!*) != -1 ); // false
330329
```
331330

332-
Se a regexp tiver a flag `padrão:g`, então `regexp.test` procura a partir da propriedade `regexp.lastIndex` e atualiza esta propriedade, assim como `regexp.exec`.
331+
Se a regexp tiver a flag `pattern:g`, então `regexp.test` procura a partir da propriedade `regexp.lastIndex` e atualiza esta propriedade, assim como `regexp.exec`.
333332

334333
Então o podemos usar para buscar a partir de uma posição fornecida:
335334

0 commit comments

Comments
 (0)