diff --git a/README-pt_BR.md b/README-pt_BR.md
new file mode 100644
index 0000000..4f1e1d8
--- /dev/null
+++ b/README-pt_BR.md
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+"the" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/dmRygT/1) + +A expressão regular `123` corresponde a string `123`. A expressão regular é comparada com uma string de entrada, comparando cada caractere da expressão regular para cada caractere da string de entrada, um após o outro. Expressões regulares são normalmente case-sensitive (sensíveis à maiúsculas), então a expressão regular `The` não vai bater com a string `the`. + +
+"The" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/1paXsy/1) + +## 2. Metacaracteres + +Metacaracteres são elementos fundamentais das expressões regulares. Metacaracteres não representam a si mesmos mas, ao invés disso, são interpretados de uma forma especial. Alguns metacaracteres tem um significado especial e são escritos dentro de colchetes. +Os metacaracteres são os seguintes: + +|Metacaracter|Descrição| +|:----:|----| +|.|Corresponde a qualquer caractere, exceto uma quebra de linha| +|[ ]|Classe de caracteres. Corresponde a qualquer caractere contido dentro dos colchetes.| +|[^ ]|Classe de caracteres negada. Corresponde a qualquer caractere que não está contido dentro dos colchetes.| +|*|Corresponde à 0 ou mais repetições do símbolo anterior.| +|+|Corresponde à 1 ou mais repetições do símbolo anterior.| +|?|Faz com que o símbolo anterior seja opcional.| +|{n,m}|Chaves. Corresponde à no mínimo "n" mas não mais que "m" repetições do símbolo anterior.| +|(xyz)|Grupo de caracteres. Corresponde aos caracteres xyz nesta exata ordem.| +|||Alternância. Corresponde os caracteres antes ou os caracteres depois do símbolo| +|\|Escapa o próximo caractere. Isso permite você utilizar os caracteres reservados
[ ] ( ) { } . * + ? ^ $ \ |
|
+|^|Corresponde ao início da entrada.|
+|$|Corresponde ao final da entrada.|
+
+## 2.1 Ponto final
+
+O ponto final `.` é um simples exemplo de metacaracteres. O metacaractere `.` corresponde à qualquer caractere sozinho. Ele não se iguala ao Enter e à quebra de linha. Por exemplo, a expressão regular `.ar` significa: qualquer caractere, seguido da letra `a`, seguida da letra `r`.
+
++".ar" => The car parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/xc9GkU/1) + +## 2.2 Conjunto de caracteres + +Conjuntos de caracteres também são chamados de classes de caracteres. Utilizamos colchetes para especificar conjuntos de caracteres. Use um hífen dentro de um conjunto de caracteres para especificar o intervalo de caracteres. A ordem dos caracteres dentro dos colchetes não faz diferença. Por exemplo, a expressão regular `[Tt]he` significa: um caractere maiúsculo `T` ou minúsculo `t`, seguido da letra `h`, seguida da letra `e`. + +
+"[Tt]he" => The car parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/2ITLQ4/1) + +No entanto, um ponto final dentro de um conjunto de caracteres, significa apenas um ponto final. A expressão regular `ar[.]` significa: o caractere minúsculo `a`, seguido da letra `r`, seguida pelo caractere de ponto final `.`. + +
+"ar[.]" => A garage is a good place to park a car. ++ +[Teste a RegExp](https://regex101.com/r/wL3xtE/1) + +### 2.2.1 Conjunto de caracteres negados + +No geral, o símbolo do circunflexo representa o início da string, mas quando está logo após o colchete de abertura, ele faz a negação do conjunto de caracteres. Por exemplo, a expressão regular `[^c]ar` significa: qualquer caractere com exceção do `c`, seguido pelo caractere `a`, seguido da letra `r`. + +
+"[^c]ar" => The car parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/nNNlq3/1) + +## 2.3 Repetições + +Seguindo os metacaracteres `+`, `*` ou `?` são utilizados para especificar quantas vezes um sub-padrão pode ocorrer. Esses metacaracteres atuam de formas diferentes em diferentes situações. + +### 2.3.1 O Asterisco + +O símbolo `*` corresponde à zero ou mais repetições do padrão antecedente. A expressão regular `a*` significa: zero ou mais repetições do caractere minúsculo precedente `a`. Mas se o asterisco aparecer depois de um conjunto de caracteres, ou classe de caracteres, ele irá procurar as repetições de todo o conjunto. Por exemplo, a expressão regular `[a-z]*` significa: qualquer quantidade de letras minúsculas numa linha. + +
+"[a-z]*" => The car parked in the garage #21. ++ +[Teste a RegExp](https://regex101.com/r/7m8me5/1) + +O símbolo `*` pode ser usado junto do metacaractere `.` para encontrar qualquer string de caracteres `.*`. O símbolo `*` pode ser usado com o caractere de espaço em branco `\s` para encontrar uma string de caracteres em branco. Por exemplo, a expressão `\s*cat\s*` significa: zero ou mais espaços, seguidos do caractere minúsculo `c`, seguido do caractere minúsculo `a`, seguido do caractere minúsculo `t`, seguido de zero ou mais espaços. + +
+"\s*cat\s*" => The fat cat sat on the concatenation. ++ +[Teste a RegExp](https://regex101.com/r/gGrwuz/1) + +### 2.3.2 O Sinal de Adição + +O símbolo `+` corresponde à uma ou mais repetições do caractere anterior. Por exemplo, a expressão regular `c.+t` significa: a letra minúscula `c`, seguida por pelo menos um caractere, seguido do caractere minúsculo `t`. + +
+"c.+t" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/Dzf9Aa/1) + +### 2.3.3 O Ponto de Interrogação + +Em expressões regulares, o metacaractere `?` faz o caractere anterior ser opcional. Esse símbolo corresponde à zero ou uma ocorrência do caractere anterior. Por exemplo, a expressão regular `[T]?he` significa: A letra maiúsculo `T` opcional, seguida do caractere minúsculo `h`, seguido do caractere minúsculo `e`. + +
+"[T]he" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/cIg9zm/1) + +
+"[T]?he" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/kPpO2x/1) + +## 2.4 Chaves + +Em expressões regulares, chaves, que também são chamadas de quantificadores, são utilizadas para especificar o número de vezes que o caractere, ou um grupo de caracteres, pode se repetir. Por exemplo, a expressão regular `[0-9]{2,3}` significa: Encontre no mínimo 2 dígitos, mas não mais que 3 (caracteres no intervalo de 0 à 9). + +
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Teste a RegExp](https://regex101.com/r/juM86s/1) + +Nós podemos retirar o segundo número. Por exemplo, a expressão regular `[0-9]{2,}` significa: Encontre 2 ou mais dígitos. Se removermos a vírgula a expressão regular `[0-9]{3}` significa: Encontre exatamente 3 dígitos. + +
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Teste a RegExp](https://regex101.com/r/Gdy4w5/1) + +
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0. ++ +[Teste a RegExp](https://regex101.com/r/Sivu30/1) + +## 2.5 Grupo de Caracteres + +Grupo de caracteres é um grupo de sub-padrão que é escrito dentro de parênteses `(...)`. Como falamos antes, se colocaramos um quantificador depois de um caractere, ele irá repetir o caractere anterior. Mas se colocarmos um quantificador depois de um grupo de caracteres, ele irá repetir todo o conjunto. Por exemplo, a expressão regular `(ab)*` corresponde à zero ou mais repetições dos caracteres "ab". Nós também podemos usar o metacaractere de alternância `|` dentro de um grupo de caracteres. Por exemplo, a expressão regular `(c|g|p)ar` significa: caractere minúsculo `c`, `g` ou `p`, seguido do caractere `a`, seguido do caractere `r`. + +
+"(c|g|p)ar" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/tUxrBG/1) + +## 2.6 Alternância + +Em expressões regulares, a barra vertical `|` é usada para definir alternância. Alternância é como uma condição entre múltiplas expressões. Agora, você pode estar pensando que um conjunto de caracteres e a alternância funcionam da mesma forma. Mas a grande diferença entre eles é que o conjunto de caracteres trabalha no nível de caracteres, enquanto a alternância trabalha no nível das expressões. Por exemplo, a expressão regular `(T|t)he|car` significa: o caractere maiúsculo `T` ou minúsculo `t`, seguido do caractere minúsculo `h`, seguido do caractere minúsculo `e` ou o caractere minúsculo `c`, seguido do caractere minúsculo `a`, seguido do caractere minúsculo `r`. + +
+"(T|t)he|car" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/fBXyX0/1) + +## 2.7 Escapando Caracteres Especiais + +Em expressões regulares, a contrabarra `\` é usada para escapar o próximo caractere. Isso possibilita especificar um símbolo como um caractere correspondente, incluindo os caracteres reservados `{ } [ ] / \ + * . $ ^ | ?`. Para usar um caractere especial como um caractere correspondente, utilize `\` antes dele. Por exemplo, a expressão regular `.` é usada para encontrar qualquer caractere, exceto nova linha. Agora, para encontrar `.` em uma string de entrada, a expressão regular `(f|c|m)at\.?` significa: letra minúscula `f`, `c` ou `m`, seguida do caractere minúsculo `a`, seguido da letra minúscula `t`, seguida do caractere `.` opcional. + +
+"(f|c|m)at\.?" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/DOc5Nu/1) + +## 2.8 Âncoras + +Em empressões regulares, usamos âncoras para verificar se o caractere encontrado está no início ou no final da string de entrada. As âncoras podem ser de dois tipos: O primeiro tipo é o Acento Circunflexo `^`, que verifica se o caractere encontrado está no início da string de entrada, e o segundo tipo é o Sinal de Dólar `$`, que verifica se o caractere encontrado é o último caractere da string. + +### 2.8.1 Acento Circunflexo + +O símbolo do Acento Circunflexo `^` é usado para verificar se o caractere encontrado é o primeiro caractere da string de entrada. Se aplicarmos a seguinte expressão regular `^a` (se a é o primeiro caractere) à string de entrada `abc`, ela encontra o `a`. Mas se nós aplicarmos a expressão regular `^b` na mesma string, ela não encontrará nada. Isso acontece porque, na string `abc`, "b" não é o caractere inicial. Vamos dar uma olhada em outra expressão regular, `^(T|t)he` que significa: o caractere maiúsculo `T` ou o caractere minúsculo `t` que é o primeiro símbolo da string de entrada, seguido do caractere minúsculo `h`, seguido do caractere minúsculo `e`. + +
+"(T|t)he" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/5ljjgB/1) + +
+"^(T|t)he" => The car is parked in the garage. ++ +[Teste a RegExp](https://regex101.com/r/jXrKne/1) + +### 2.8.2 Sinal de Dólar + +O símbolo do Sinal de Dólar `$` é usado para verificar se o caractere encontrado é o último caractere da string de entrada. Por exemplo, a expressão regular `(at\.)$` significa: um caractere minúsculo `a`, seguido do caractere minúsculo `t`, seguido de um ponto final `.` e o grupo deve estar no final da string. + +
+"(at\.)" => The fat cat. sat. on the mat. ++ +[Teste a RegExp](https://regex101.com/r/y4Au4D/1) + +
+"(at\.)$" => The fat cat. sat. on the mat. ++ +[Teste a RegExp](https://regex101.com/r/t0AkOd/1) + +## 3. Forma Abreviada de Conjunto de Caracteres + +As expressões regulares fornecem abreviações para conjuntos de caracteres comumente usados, que oferecem atalhos convenientes para expressões regulares comumente usadas. As abreviações são as seguintes: + +|Abreviação|Descrição| +|:----:|----| +|.|Qualquer caractere, exceto nova linha| +|\w|Corresponde à caracteres alfanuméricos: `[a-zA-Z0-9_]`| +|\W|Corresponde à caracteres não alfanuméricos: `[^\w]`| +|\d|Corresponde à dígitos: `[0-9]`| +|\D|Corresponde à não dígitos: `[^\d]`| +|\s|Corresponde à caracteres de espaços em branco: `[\t\n\f\r\p{Z}]`| +|\S|Corresponde à caracteres de espaços não em branco: `[^\s]`| + +## 4. Olhar ao Redor + +Lookbehind (olhar atrás) e lookahead (olhar à frente), às vezes conhecidos como lookarounds (olhar ao redor), são tipos específicos de ***grupo de não captura*** (utilizado para encontrar um padrão, mas não incluí-lo na lista de ocorrêncoas). Lookarounds são usados quando temos a condição de que determinado padrão seja precedido ou seguido de outro padrão. Por exemplo, queremos capturar todos os números precedidos do caractere `$` da seguinte string de entrada: `$4.44 and $10.88`. Vamos usar a seguinte expressão regular `(?<=\$)[0-9\.]*` que significa: procure todos os números que contêm o caractere `.` e são precedidos pelo caractere `$`. À seguir estão os lookarounds que são utilizados em expressões regulares: + +|Símbolo|Descrição| +|:----:|----| +|?=|Lookahead Positivo| +|?!|Lookahead Negativo| +|?<=|Lookbehind Positivo| +|? +"[T|t]he(?=\sfat)" => The fat cat sat on the mat. + + +[Teste a RegExp](https://regex101.com/r/IDDARt/1) + +### 4.2 Lookahead Negativo + +O lookahead negativo é usado quando nós precisamos encontrar todas as ocorrências da string de entrada que não são seguidas por um determinado padrão. O lookahead negativo é definido da mesma forma que definimos o lookahead positivo, mas a única diferença é que, no lugar do sinal de igual `=`, usamos o caractere de negação `!`, ex.: `(?!...)`. Vamos dar uma olhada na seguinte expressão regular `[T|t]he(?!\sfat)`, que significa: obtenha as palavras `The` ou `the` da string de entrada que não são seguidas pela palavra `fat`, precedida de um caractere de espaço. + +
+"[T|t]he(?!\sfat)" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/V32Npg/1) + +### 4.3 Lookbehind Positivo + +Lookbehind positivo é usado para encontrar todas as ocorrências que são precedidas por um padrão específico. O lookbehind positivo é indicado por `(?<=...)`. Por exemplo, a expressão regular `(?<=[T|t]he\s)(fat|mat)` significa: obtenha todas as palavras `fat` ou `mat` da string de entrada, que estão depois das palavras `The` ou `the`. + +
+"(?<=[T|t]he\s)(fat|mat)" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/avH165/1) + +### 4.4 Lookbehind Negativo + +Lookbehind negativo é usado para encontrar todas as ocorrências que não são precedidas por um padrão específico. O lookbehind negativo é indicado por `(? +"(?<![T|t]he\s)(cat)" => The cat sat on cat. + + +[Teste a RegExp](https://regex101.com/r/8Efx5G/1) + +## 5. Flags + +Flags (sinalizadores) também são chamados de modificadores, porque eles modificam o resultado da expressão regular. Essas flags podem ser usadas em qualquer ordem ou combinação, e são uma parte integrante da RegExp. + +|Flag|Descrição| +|:----:|----| +|i|Case insensitive: Define que o padrão será case-insensitive.| +|g|Busca global: Procura o padrão em toda a string de entrada.| +|m|Multilinhas: Os metacaracteres de âncora funcionam em cada linha.| + +### 5.1 Indiferente à Maiúsculas + +O modificador `i` é usado para tornar o padrão case-insensitive. Por exemplo, a expressão regular `/The/gi` significa: a letra maiúscula `T`, seguida do caractere minúsculo `h`, seguido do caractere `e`. E ao final da expressão regular, a flag `i` diz ao motor de expressões regulares para ignorar maiúsculas e minúsculas. Como você pode ver, nós também determinamos a flag `g` porque queremos procurar o padrão em toda a string de entrada. + +
+"The" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/dpQyf9/1) + +
+"/The/gi" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/ahfiuh/1) + +### 5.2 Busca Global + +O modificador `g` é usado para realizar uma busca global (encontrar todas as ocorrências sem parar na primeira encontrada). Por exemplo, a expressão regular `/.(at)/g` significa: qualquer caractere, exceto nova linha, seguido do caractere minúsculo `a`, seguido do caractere minúsculo `t`. Por causa da flag `g` no final da expressão regular, agora ela vai encontrar todas as ocorrências em toda a string de entrada. + +
+"/.(at)/" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/jnk6gM/1) + +
+"/.(at)/g" => The fat cat sat on the mat. ++ +[Teste a RegExp](https://regex101.com/r/dO1nef/1) + +### 5.3 Multilinhas + +O modificador `m` é usado para realizar uma busca em várias linhas. Como falamos antes, as âncoras `(^, $)` são usadas para verificar se o padrão está no início ou no final da string de entrada. Mas se queremos que as âncoras funcionem em cada uma das linhas, usamos a flag `m`. Por exemplo, a expressão regular `/at(.)?$/gm` significa: o caractere minúsculo `a`, seguido do caractere minúsculo `t`, opcionalmente seguido por qualquer caractere, exceto nova linha. E por causa da flag `m`, agora o motor de expressões regulares encontra o padrão no final de cada uma das linhas da string. + +
+"/.at(.)?$/" => The fat + cat sat + on the mat. ++ +[Teste a RegExp](https://regex101.com/r/hoGMkP/1) + +
+"/.at(.)?$/gm" => The fat + cat sat + on the mat. ++ +[Teste a RegExp](https://regex101.com/r/E88WE2/1) + +## Contribution + +* Reporte bugs +* Abra pull request com melhorias +* Espalhe a palavra +* Me encontre diretamente em ziishaned@gmail.com ou [](https://twitter.com/ziishaned) + +## Licença + +MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com) diff --git a/README.md b/README.md index d1d958d..cf6bb79 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ * [English](README.md) * [Español](README-es.md) * [Français](README-fr.md) +* [Português do Brasil](README-pt_BR.md) * [中文版](README-cn.md) * [日本語](README-ja.md) * [한국어](README-ko.md)