Expressões Regulares: o que você precisa saber pra começar?
Dependendo do trabalho que você faça em TI, se você já ouviu falar em expressões regulares, mas não as domina e tampouco faz uso delas, é bom começar a pensar em mudar isso!
Não é nossa proposta ensinar expressões regulares com um simples post sobre, o que seria no mínimo pretensioso e certamente não aproveitaria todo o potencial que esse tema tem em ciência da computação.
Nossa ideia é trazer um pouco de luz àqueles que ainda se assustam quando veem algo como “\d{3}\.?\d{3}\.?\d{3}-?\d{2}” e mostrar por quais motivos é um conhecimento essencial para muitos profissionais da área.
Abra sua mente, livre-se dos possíveis medos e preconceitos e vem com a gente descobrir porque expressões regulares precisam fazer parte do seu acervo de conhecimentos!
O que são expressões regulares?
Não é difícil explicar o que são expressões regulares, mas decidir por onde começar a explicação, é.
Isso porque boa parte do material a respeito, começa apresentando uma “definição clássica”, a qual geralmente não é muito esclarecedora e, portanto, assusta aqueles que já tem uma ideia enviesada a respeito ou os totalmente leigos no assunto.
Vamos começar entendendo o que o termo significa:
-
Expressão – no campo da matemática e da computação, expressão costuma ser uma sequência de letras, números e sinais de operações, que representam um cálculo. Um exemplo de expressão: “3a + b”;
-
Regular – regular é a qualidade ou característica daquilo que apresenta um padrão repetido, uma regra observável, ou ainda, uma lógica fixa.
Agora imagine que seja preciso representar todas as letras do alfabeto de “a” até “z”. Aqueles que não conhecem expressões regulares, digitariam uma por uma das letras. Além disso, uns separariam cada letra com vírgula, outros com espaços, outros sem nada.
Mas como o alfabeto romano tem uma sequência observável e fixa, há regularidade e assim, pode ser expresso como:
[a-z]
Sim, simples assim! Essa é uma expressão regular clássica que equivale às letras do alfabeto romano.
Partindo do mesmo raciocínio, a solicitação para representar os dígitos de “0” até “9”, corresponde a expressão regular:
[0-9]
Seja no primeiro exemplo, seja no segundo, há variações das expressões utilizadas, quando se quer uma representação mais específica.
Suponhamos que se queira equivalência tanto das letras minúsculas, quanto das maiúsculas. Nesse caso, a expressão é:
[a-zA-Z]
Ou seja, a partir dos casos acima, podemos afirmar que uma expressão regular é a representação de conjuntos ou sequências de caracteres de interesse (unidades básicas de texto e símbolos gráficos), que satisfazem uma regra ou padrão ou lógica.
Fácil até aqui, não é? Mas para entender porque é importante no contexto de TI, que tal um pouquinho de história?
Como surgiram as expressões regulares?
Na década de 1950, o matemático estadunidense Stephen Cole Kleene descreveu modelos de computação e formas de descrever, classificar e reconhecer linguagens, usando para isso uma notação matemática chamada de "conjuntos regulares" e, que posteriormente ficaria conhecida como álgebra de Kleene.
A ideia era justamente representar de um modo mais simples e conciso, situações como as que exemplificamos anteriormente.
Kleene cunhou o termo Regular Expression, para se referir à notação matemática que conseguia descrever os chamados conjuntos regulares (regular sets).
Em termos práticos, o conceito foi sendo incluído aos poucos a:
-
Ferramentas e editores de texto como QED e, depois, no editor ed padrão do sistema Unix;
-
Linguagens de programação como C (via biblioteca) e Perl (desde a primeira versão);
-
Utilitários de varredura como o grep (usado no Linux), ou ainda o AWK, uma linguagem de script destinada a analisar e manipular textos e dados estruturados.
Aos poucos, conforme mais e mais linguagens passaram a incorporar a notação criada por Kleene e, portanto, popularizá-la, chamá-la apenas de regex, tornou-se extremamente comum.
Por que as expressões regulares são importantes?
Deve ter ficado claro que representar todo o alfabeto pela sua respectiva regex, é muito mais fácil, não é?
Mas não é apenas um ganho ao encurtar a digitação. Objetivamente, expressões regulares são importantes porque:
-
Legibilidade do código – quando usadas em programação, os trechos de código que contém regex ganham em legibilidade;
-
Código mais enxuto – permitem criar códigos mais concisos, mais enxutos;
-
Menos programação – se não houvesse as expressões regulares, toda a lógica de verificação precisaria ser pensada e implementada em código pelo programador;
-
Rastreamento de erros – os dois benefícios anteriores também resultam em facilidade ao rastrear um erro de programação. Em vez verificar toda a lógica envolvida e o respectivo código, o programador avalia apenas a regex correspondente;
-
Suporte – o suporte às expressões regulares está por toda parte:
-
Linguagens de programação – praticamente todas as linguagens de programação modernas possuem suporte a regex, reforçando a sua importância. Linguagens como JavaScript, Ruby, PHP e Perl permitem escrever padrões diretamente no código. Outras, como Python, Java, C# e Rust o fazem por intermédio de um módulo;
-
Bancos de dados – a maioria dos sistemas de banco de dados SQL modernos (PostgreSQL, MySQL, MariaDB, etc) possui suporte nativo a regex, embora a sintaxe e as funções variem dependendo do software (SGBD) utilizado;
-
Sistemas operacionais – todos os sistemas operacionais modernos (Linux, macOS, Unix, BSD, Windows, Android e iOS) "entendem" regex nativamente através de suas ferramentas de linha de comando pré-instaladas.
-
Ou seja, as vantagens são inegáveis e provam a relevância do seu uso em diferentes situações.
Exemplos de uso prático de expressões regulares
Nesse ponto muitos costumam dizer: “Ok, parece muito bom, mas quando dá para usar?”
Os mais céticos e que precisam de exemplos reais, eis algumas situações bastante comuns:
1. Validação de e-mail
Verifica se um e-mail está no formato correto:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
2. Validação de telefone
Valida números telefônicos como (11)91234-5678 ou (21)1234-5678:
^\([0-9]{2}\)[0-9]{4,5}-[0-9]{4}$
3. Extração de URLs de um texto
Encontrar links que começam com http:// ou https:// até encontrar um espaço:
https?://[^\s]+
4. Validar CPF (apenas com pontuação)
Aceita apenas o formato 123.456.789-00:
[0-9]{3}[.][0-9]{3}[.][0-9]{3}[.][-][0-9]{2}$
Observação: a depender da linguagem, existem ferramentas mais específicas com esse objetivo.
5. Localização de palavras repetidas
Detecção de duplicidades como "o o" ou "casa casa" em um texto:
\b(\w+)\s+\1\b
6. Entrada de data no formato DD/MM/AAAA
Verificação de datas válidas (ex: 25/12/2026), com anos de 1900 a 2099:
^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/(19|20)\d{2}$
7. Extração de números de um texto (como IDs ou valores)
Identificar todos os números de um parágrafo, ex: "Pedido 123, valor R$ 45,67" retorna 123, 45, 67:
\d+
8. Captura de endereços IP
Identificar e validar endereços de IP no formato IPv4:
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Seja você um programador, seja um administrador de servidor, seja até um especialista em cibersegurança, o dia a dia e os desafios cotidianos mostrarão muitas situações nas quais as expressões regulares tornam o trabalho mais fácil, eficiente e rápido.
Como funcionam as expressões regulares?
Agora que você já viu alguns exemplos reais da utilidade de uma regex, provavelmente está curioso para saber como isso funciona, certo?
Embora não seja uma linguagem de programação, da mesma forma que elas e outras linguagens, as expressões regulares têm regras e sintaxes que fazem com que o interpretador compreenda o que cada uma representa.
Partindo de um dos exemplos mais básicos – [a-z]:
-
Os colchetes [] criam uma classe de caracteres. Eles servem para indicar que o programa deve buscar qualquer um dos caracteres que estão dentro deles em uma única posição do texto;
-
As letras “a” e “z”, separadas pelo hífen, indicam o intervalo dos caracteres a ser considerado. Se em vez de “a-z”, tivéssemos “a-d”, intervalo considerado seria a, b, c e d.
Agora considere um arquivo com centenas de linhas com números inteiros de variados tamanhos até o limite de 99999999 (entre 1 e 8 dígitos e inferiores a 100 milhões) e veja o resultado com diferentes regex:
-
[0-9] – destaca todos os caracteres presentes no arquivo, pois todos são numéricos e satisfazem a condição, que é estar entre 0 e 9;
-
[3][3] – identifica todos os números que tenham duas ocorrências seguidas do 3 (três) em qualquer posição de qualquer número;
-
[3]{2} – produz o mesmo resultado da regex anterior. Ou seja, o número 2 (dois) entre as chaves indica quantas ocorrências precisam existir. É o quantificador;
-
[0-9]{4} – traz todos os números superiores a 999 e destaca os quatro primeiros dígitos, pois considera todos que tenham entre 0 e 9, quatro vezes seguidas;
-
[0-9]{4}$ – também retorna números maiores que 999, mas destacando os últimos quatro dígitos;
-
^[0-9]{4}$ – aqui o resultado é somente os números maiores que 999 e menores que 10000, ou seja, têm necessariamente 4 dígitos de tamanho.
As informações acima já são suficientes para compreendermos a expressão regular para o CPF que exemplificamos anteriormente, considerando o seguinte número hipotético – “123.456.789-00”:
-
[0-9]{3}[.] – traz os três primeiros dígitos, seguido de ponto, ou seja: “123.”;
-
[0-9]{3}[.][0-9]{3}[.] – repete o mesmo padrão, ou seja, o resultado é: “123.456.”;
-
[0-9]{3}[.][0-9]{3}[.][0-9]{3} – o cuidado aqui é de remover o ponto [.] na terceira repetição do padrão, para obtermos: “123.456.789”;
-
[0-9]{3}[.][0-9]{3}[.][0-9]{3}[-][0-9]{2} – aqui o hífen [-] foi incluído e mais duas repetições de dígitos entre 0 e 9, para finalmente termos o CPF completo: “123.456.789-00”
Vale ressaltar que regex acima exige os pontos e o hífen. Ela não aceita o CPF sem pontuação (12345678900).
Para funcionar com ou sem pontuação, uma possível regex alternativa seria:
\d{3}\.?\d{3}\.?\d{3}-?\d{2}
Aliás, esse é o primeiro exemplo que demos lá na introdução!
Ou, mantendo os colchetes e marcando os símbolos como opcionais usando o “?”:
[0-9]{3}[.]?[0-9]{3}[.]?[0-9]{3}[-]?[0-9]{2}
Como aprender expressões regulares?
Agora que você aprendeu a lógica básica e que existe uma notação a ser usada para dar significado a cada expressão, é natural que queira incorporá-lo ao seu acervo de conhecimentos.
Há muitos caminhos, os quais dependem do seu estilo.
Para os autodidatas, a boa notícia é que existe muito material gratuito – e bom! – na Web, desde vídeos, apostilas, PDFs de cursos, entre outros.
Com algumas “googadas”, é fácil encontrar montes de conteúdos, mas sem dúvida, um dos bons materiais a respeito, é o livro “Expressões Regulares – Uma abordagem divertida”, do Aurelio Marinho Jargas, que você encontra para comprar em versão impressa ou e-book, no site piazinho.com.br.
Outro material ótimo e indispensável durante a jornada de aprendizado e testes, é “Expressões Regulares – Guia de Consulta Rápida”, também do Aurelio, em edição online (completa e gratuita). Vale muito a pena até para aqueles que fizerem um curso “tradicional”!
Ferramentas práticas para treinar sem medo
Além da leitura, a melhor forma de aprender regex é praticando. Existem sites gratuitos incríveis onde você pode colar um texto e testar suas expressões enquanto visualiza o que está sendo selecionado na tela:
-
Regex101 – muito popular e um dos “queridinhos” da comunidade. Ele explica exatamente o que cada caractere da sua expressão está fazendo e aponta erros na hora;
-
Regexr – outra ferramenta útil e popular. Possui uma interface super amigável e traz vários exemplos visuais para você testar e aprender na prática.
Pronto para dar o primeiro passo?
Expressões regulares podem parecer assustadoras à primeira vista, afinal esse amontoado de barras, colchetes e símbolos misturados, realmente intimida, mas lembre-se: é apenas uma nova forma de conversar com o computador para economizar o seu tempo.
Não tente memorizar tudo de uma vez. Salve os guias de consulta nos seus favoritos, abra um testador online e vá experimentando aos poucos. Quando você menos esperar, criar uma regex será tão natural quanto digitar um filtro de busca!
Conclusão
Perder o medo das expressões regulares é um divisor de águas na carreira em TI. Busque material, faça testes práticos sem pressão e vá evoluindo no seu ritmo. O segredo é a prática constante. Pronto para simplificar suas tarefas e criar suas primeiras buscas inteligentes?


