Expressões Regulares (Regex): O Que São e Como Usar na Prática

Aprenda o que são expressões regulares, os principais símbolos, quantificadores e como aplicar regex para buscar e validar textos.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 7 minutos

Imagem do artigo Expressões Regulares (Regex): O Que São e Como Usar na Prática

Imagine precisar encontrar todos os e-mails dentro de um arquivo com dez mil linhas, ou validar se um CEP foi digitado no formato correto. Fazer isso com comparações manuais dá trabalho e gera código longo. É exatamente esse tipo de problema que as expressões regulares — ou regex — resolvem: elas descrevem padrões de texto em vez de textos específicos.

O que é uma expressão regular

Uma expressão regular é uma sequência de caracteres que define um padrão de busca. Em vez de dizer “procure a palavra gato”, você diz “procure três letras minúsculas seguidas de um número”. O mecanismo de regex percorre o texto e informa onde o padrão foi encontrado.

Regex existe em praticamente todas as linguagens de programação — Python, JavaScript, Java, PHP, C#, Ruby — e também em editores de texto, planilhas, ferramentas de linha de comando e sistemas de busca. A sintaxe varia um pouco entre elas, mas o núcleo é o mesmo. Aprender uma vez serve para muitos contextos.

Os blocos básicos

Todo padrão é construído a partir de alguns elementos. Comece por estes:

SímboloSignificadoExemplo de correspondência
.Qualquer caractere (exceto quebra de linha)c.sa encontra “casa”, “cosa”
\dUm dígito de 0 a 9\d\d encontra “42”
\wLetra, número ou sublinhado\w+ encontra “usuario_1”
\sEspaço, tabulação ou quebra de linhaseparadores em geral
[abc]Qualquer um dos caracteres listados[aeiou] encontra vogais
[^abc]Qualquer caractere exceto os listadosnegação do conjunto
[a-z]Intervalo de caracteresletras minúsculas

As versões maiúsculas invertem o sentido: \D é “qualquer coisa que não seja dígito”, \W é “não é caractere de palavra” e \S é “não é espaço”.

Quantificadores: quantas vezes o padrão se repete

Quantificadores indicam a quantidade de repetições esperada do elemento anterior:

  • * — zero ou mais vezes
  • + — uma ou mais vezes
  • ? — zero ou uma vez (torna o elemento opcional)
  • {3} — exatamente três vezes
  • {2,5} — de duas a cinco vezes
  • {2,} — duas ou mais vezes

Assim, \d{5}-?\d{3} descreve um CEP brasileiro com ou sem hífen: cinco dígitos, um hífen opcional e mais três dígitos.

Âncoras: onde o padrão deve estar

Âncoras não representam caracteres, mas posições dentro do texto:

  • ^ — início da linha ou do texto
  • $ — fim da linha ou do texto
  • \b — limite de palavra, útil para encontrar palavras inteiras

A diferença é importante em validações. O padrão \d{3} encontra três dígitos em qualquer lugar do texto; já ^\d{3}$ exige que o texto inteiro seja composto por exatamente três dígitos. Em formulários, esquecer as âncoras é uma das causas mais comuns de validações que “deixam passar” dados errados.

Grupos e alternativas

Parênteses agrupam partes do padrão e permitem capturar trechos para uso posterior. A barra vertical funciona como “ou”:

  • (azul|verde|amarelo) encontra qualquer uma das três palavras.
  • (\d{2})/(\d{2})/(\d{4}) encontra uma data e separa dia, mês e ano em três grupos capturados.
  • (?:...) agrupa sem capturar, útil quando você só quer aplicar um quantificador ao grupo.

Os grupos capturados são o que torna regex tão útil em substituições: você pode reorganizar uma data de dd/mm/aaaa para aaaa-mm-dd referenciando os grupos na string de substituição.

Guloso ou preguiçoso?

Por padrão, os quantificadores são gulosos (greedy): tentam casar o maior trecho possível. Em um texto como <b>negrito</b>, o padrão <.+> captura a linha inteira, e não apenas a primeira etiqueta.

Acrescentar ? depois do quantificador o torna preguiçoso (lazy), casando o menor trecho possível: <.+?> captura só <b>. Entender essa diferença resolve boa parte dos resultados inesperados de quem está começando.

Escapando caracteres especiais

Símbolos como . * + ? ( ) [ ] { } | \ ^ $ têm significado especial. Para procurar o caractere literal, use a contrabarra antes dele. Para encontrar um ponto final de verdade, escreva \. — e não apenas ., que casaria com qualquer caractere.

Usos práticos no dia a dia

  • Validação de formulários: verificar formato de telefone, CEP, código de produto.
  • Limpeza de dados: remover espaços duplicados, caracteres invisíveis ou pontuação antes de importar uma planilha.
  • Busca e substituição em massa no editor de código, renomeando padrões em dezenas de arquivos.
  • Análise de logs: extrair datas, códigos de erro ou endereços IP de arquivos grandes.
  • Extração de informação de textos semiestruturados, como relatórios exportados.

Cuidados importantes

Regex é poderosa, mas não é a ferramenta certa para tudo:

  • Não use regex para interpretar HTML ou JSON completos. Essas estruturas são aninhadas e pedem um parser adequado.
  • Cuidado com padrões complexos demais. Certas combinações de quantificadores aninhados podem tornar a busca extremamente lenta em textos grandes.
  • Validação de e-mail perfeita é praticamente inviável. Na prática, um padrão simples somado à confirmação por mensagem funciona melhor do que uma regex gigante.
  • Documente seus padrões. Uma regex de 40 caracteres é ilegível seis meses depois; um comentário explicando a intenção economiza tempo.

Como praticar

O caminho mais rápido é testar em pequenas doses. Pegue uma lista real — nomes de arquivos, códigos de produto, linhas de um log — e tente escrever padrões cada vez mais precisos. Existem editores online de regex que destacam as correspondências em tempo real e explicam cada parte do padrão, o que acelera muito o aprendizado.

Uma boa progressão de estudo é: primeiro dominar classes de caracteres e quantificadores; depois âncoras; em seguida grupos e substituição; e só então recursos avançados como lookahead e lookbehind.

Se você está construindo sua base em lógica de programação e quer aplicar regex dentro de projetos reais, vale conhecer os cursos gratuitos de lógica de programação e de linguagens como Python e JavaScript disponíveis na Cursa — o assunto aparece cedo e acompanha você por toda a carreira em tecnologia.

Cursos gratuitos em vídeo

Imagem do Curso gratuito Algoritmos e Lógica de Programação

Curso GratuitoAlgoritmos e Lógica de Programação

5

EstrelaEstrelaEstrelaEstrelaEstrela

(6)

Clock icon

4h06m

List icon

14 exercícios

Imagem do Curso gratuito Lógica de Programação

Curso GratuitoLógica de Programação

5

EstrelaEstrelaEstrelaEstrelaEstrela

(10)

Clock icon

1h55m

List icon

15 exercícios

Imagem do Curso gratuito Aprenda Programação criando games

Curso GratuitoAprenda Programação criando games

5

EstrelaEstrelaEstrelaEstrelaEstrela

(4)

Clock icon

2h52m

List icon

13 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

5

EstrelaEstrelaEstrelaEstrelaEstrela

(53)

Clock icon

7h35m

List icon

15 exercícios

Recomendado
Imagem do Curso gratuito Algoritmo e lógica de programação em C

Curso GratuitoAlgoritmo e lógica de programação em C

4.9

EstrelaEstrelaEstrelaEstrelaEstrela

(122)

Clock icon

8h44m

List icon

27 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de programação na prática com desafios

Curso GratuitoLógica de programação na prática com desafios

4.9

EstrelaEstrelaEstrelaEstrelaEstrela

(7)

Clock icon

3h02m

List icon

5 exercícios

Imagem do Curso gratuito Lógica de Programação com Python para Iniciantes

Curso GratuitoLógica de Programação com Python para Iniciantes

4.8

EstrelaEstrelaEstrelaEstrelaEstrela

(6)

Clock icon

1h05m

List icon

5 exercícios

Imagem do Curso gratuito Logica de programação

Curso GratuitoLogica de programação

4.8

EstrelaEstrelaEstrelaEstrelaEstrela

(79)

Clock icon

1h11m

List icon

8 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

4.7

EstrelaEstrelaEstrelaEstrelaMeia estrela

(143)

Clock icon

4h18m

List icon

31 exercícios

Imagem do Curso gratuito Lógica de programação completa

Curso GratuitoLógica de programação completa

4.7

EstrelaEstrelaEstrelaEstrelaMeia estrela

(9)

Clock icon

9h19m

List icon

24 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de programação com Javascript do zero para iniciantes em programação

Curso GratuitoLógica de programação com Javascript do zero para iniciantes em programação

4.7

EstrelaEstrelaEstrelaEstrelaMeia estrela

(3)

Clock icon

3h07m

List icon

6 exercícios

Imagem do Curso gratuito Lógica de programação

Curso GratuitoLógica de programação

4.4

EstrelaEstrelaEstrelaEstrelaMeia estrela

(8)

Clock icon

1h29m

List icon

17 exercícios

Imagem do Curso gratuito Lógica de Programação em Portugol para Iniciantes

Curso GratuitoLógica de Programação em Portugol para Iniciantes

1

Estrela

(1)

Clock icon

1h59m

List icon

8 exercícios

Imagem do Curso gratuito Linguagem e lógica de programação

Curso GratuitoLinguagem e lógica de programação

Novo

Clock icon

9h32m

List icon

8 exercícios

Imagem do Curso gratuito Lógica de Programação e Algoritmos

Curso GratuitoLógica de Programação e Algoritmos

Novo

Clock icon

5h56m

List icon

20 exercícios

Imagem do Curso gratuito Pensamento Computacional

Curso GratuitoPensamento Computacional

Novo

Clock icon

2h32m

List icon

11 exercícios

Recomendado
Imagem do Curso gratuito Portugol Studio: Algoritmos e Lógica de Programação do Zero

Curso GratuitoPortugol Studio: Algoritmos e Lógica de Programação do Zero

Novo

Clock icon

5h50m

List icon

25 exercícios

Imagem do Curso gratuito Lógica de Programação em Flutter: Do Zero ao App

Curso GratuitoLógica de Programação em Flutter: Do Zero ao App

Novo

Clock icon

2h38m

List icon

15 exercícios

Imagem do Curso gratuito Lógica de Programação e Algoritmos do Zero ao Avançado

Curso GratuitoLógica de Programação e Algoritmos do Zero ao Avançado

Novo

Clock icon

2h17m

List icon

6 exercícios

Ideal para iniciantes
Imagem do Curso gratuito Lógica de Programação e Algoritmos no Visualg (do Zero ao Avançado)

Curso GratuitoLógica de Programação e Algoritmos no Visualg (do Zero ao Avançado)

Novo

Clock icon

4h43m

List icon

10 exercícios

Cookies, Cache e Histórico: O Que o Navegador Guarda Sobre Você

Entenda o que são cookies, cache e histórico do navegador, para que servem, quando limpar cada um e como isso afeta sua privacidade.

Sensores e Atuadores: Como o Arduino Percebe o Mundo e Age Sobre Ele

Entenda a diferença entre sensores e atuadores, como o Arduino lê sinais e aciona dispositivos, e como montar seus primeiros projetos.

Endereço IP, Máscara de Sub-rede e Gateway: O Trio Que Faz Sua Rede Funcionar

Entenda de forma prática o que são endereço IP, máscara de sub-rede e gateway padrão, e como esses três parâmetros conversam entre si.

Compressão de Arquivos: Como o ZIP Consegue Reduzir o Tamanho dos Seus Dados

Entenda como funciona a compressão de arquivos, a diferença entre métodos com e sem perda e quando cada formato faz sentido.

Expressões Regulares (Regex): O Que São e Como Usar na Prática

Aprenda o que são expressões regulares, os principais símbolos, quantificadores e como aplicar regex para buscar e validar textos.

Como Funciona o DNS: o Sistema que Traduz Nomes em Endereços na Internet

Entenda de forma simples o que é DNS, como acontece a resolução de nomes, os principais tipos de registro e por que ele é essencial para a internet.

INNER JOIN, LEFT JOIN e RIGHT JOIN: como relacionar tabelas no SQL

Entenda de forma simples como funcionam INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN para combinar dados de várias tabelas no SQL.

TypeScript para iniciantes: o que é e por que ele melhora o JavaScript

Entenda o que é TypeScript, como a tipagem estática ajuda a evitar erros e por que ele se tornou essencial no desenvolvimento web moderno.