Introdução às Expressões Regulares (Regex)
Tags: regex, webdev, beginners, braziliandevs
Published: 2024-05-26 16:48:21

Vamos falar sobre expressões regulares (Regex). 

Nesse artigo, vamos abordar alguns conceitos, ver como usá-los com exemplos práticos. Este guia é adequado tanto para iniciantes quanto para aqueles que já têm alguma experiência.

## O Que São Expressões Regulares?

Expressões regulares, ou Regex, são sequências de caracteres que formam um padrão de pesquisa. Elas são usadas para procurar e manipular texto baseado em padrões específicos. Regex pode ser usada em diversas linguagens de programação, como JavaScript, Java, Python entre outras.

## Por Que Usar Regex?

Regex é extremamente útil para:
- Validação de entrada de dados (como e-mails, números de telefone)
- Busca e substituição em texto
- Extração de informações de grandes volumes de texto

## Sintaxe Básica

### Caracteres Literais

O exemplo mais simples de Regex é a correspondência de caracteres literais. Por exemplo, a expressão `animal` corresponde exatamente à sequência "animal" no texto.

### Metacaracteres

Metacaracteres têm significados especiais em Regex. Alguns dos metacaracteres mais comuns são:
- `.`: Corresponde a qualquer caractere único, exceto nova linha.
- `^`: Início de uma linha.
- `$`: Fim de uma linha.
- `*`: Zero ou mais ocorrências do caractere anterior.
- `+`: Uma ou mais ocorrências do caractere anterior.
- `?`: Zero ou uma ocorrência do caractere anterior.
- `\`: Escapa um metacaractere (por exemplo, `\.` corresponde a um ponto literal).

### Conjuntos de Caracteres

Conjuntos de caracteres permitem especificar um conjunto de caracteres que correspondem a uma posição no texto. Eles são definidos entre colchetes `[]`.

- `[abc]`: Corresponde a qualquer um dos caracteres a, b ou c.
- `[a-z]`: Corresponde a qualquer caractere minúsculo de a a z.
- `[^abc]`: Corresponde a qualquer caractere que não seja a, b ou c.

### Âncoras e Limites

- `\b`: Limite de palavra (fronteira entre caractere de palavra e não-palavra).
- `\B`: Não-limite de palavra.

## Exemplos Práticos

### Validação de E-mail

Um exemplo comum é a validação de endereços de e-mail. Uma Regex para validar e-mails pode ser complexa, mas um exemplo simples seria:

```regex
^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$
```

- `^[\w.-]+`: Início da linha seguido por um ou mais caracteres de palavra, ponto ou hífen.
- `@[a-zA-Z\d.-]+`: Um caractere @ seguido por um ou mais caracteres alfanuméricos, ponto ou hífen.
- `\.[a-zA-Z]{2,6}$`: Um ponto seguido por 2 a 6 caracteres alfabéticos até o fim da linha.

Exemplo em JavaScript:

```js
const emailPattern = /^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$/;
const email = "exemplo@dominio.com";
console.log(emailPattern.test(email));  // true
```

### Extração de URLs

Para extrair URLs de um texto, você pode usar a seguinte Regex:

```regex
https?:\/\/[^\s]+
```

- `https?`: Corresponde a "http" ou "https".
- `:\/\/`: Corresponde a "://".
- `[^\s]+`: Corresponde a um ou mais caracteres que não sejam espaço.

Exemplo em JavaScript:

```js
const text = "Visite nosso site em http://example.com e http://test.com";
const urlPattern = /https?:\/\/[^\s]+/g;
const urls = text.match(urlPattern);
console.log(urls);  // ["http://example.com", "http://test.com"]
```

### Substituição de Palavras

Para substituir todas as ocorrências da palavra "foo" por "bar" em um texto, você pode usar a Regex:

```regex
s/foo/bar/g
```

- `foo`: O padrão a ser correspondido.
- `bar`: O texto de substituição.
- `g`: Modificador que significa "global", ou seja, substituir todas as ocorrências.

Exemplo em JavaScript:

```js
const text = "foo é uma palavra comum, foo é usada frequentemente.";
const newText = text.replace(/foo/g, 'bar');
console.log(newText);  // "bar é uma palavra comum, bar é usada frequentemente."
```

## Conclusão

Regex é uma ferramenta poderosa e versátil para manipulação de texto. Compreender sua sintaxe e aprender a aplicá-la em diferentes contextos pode economizar tempo e esforço em tarefas de processamento de texto. Comece com os conceitos básicos e experimente com exemplos práticos para melhorar suas habilidades em Regex.