Expressões Regulares

Expressão Regular: Um método formal de se especificar um padrão de texto.

Expressão Regular: Como o brinquedo LEGO, várias pecinhas diferentes, cada uma com sua característica, que juntas compõem estruturas completas e podem ser arranjadas com infinitas combinações diferentes.

Expressão Regular: Uma composição de símbolos, caracteres com funções especiais, que, agrupados entre si e com caracteres literais, formam uma seqüência, uma expressão. Essa expressão é interpretada como uma regra, que indicará sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condições.

Está com tempo? Leia agora a versão online do meu livro de Expressões Regulares!

Destaques: Apostila de introdução, Livro em português, Testador online, 10 anos de regex.

Veja também: Sed, Vim, Shell Script, Cygwin, CODARE, docz nerdz.

Livros que escrevi

Expressões Regulares - Uma abordagem divertida (5ª edição)

Livro de 248 páginas lançado em fevereiro de 2016, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. Está à venda na maioria das livrarias do país, na versão impressa e também em e-book (livro digital). ISBN: 978-85-7522-474-8
Expressões Regulares - Uma abordagem divertida (4ª edição)

Livro de 224 páginas lançado em novembro de 2012, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. ISBN: 978-85-7522-337-6 [ESGOTADO]
Expressões Regulares - Uma abordagem divertida (3ª edição)

Livro de 208 páginas lançado em outubro de 2009, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. ISBN: 978-85-7522-212-6 [ESGOTADO]
Expressões Regulares - Uma abordagem divertida (2ª edição)

Livro de 168 páginas lançado em 2008, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. ISBN: 978-85-7522-173-0 [ESGOTADO]
Expressões Regulares - Uma abordagem divertida (1ª edição)

Livro de 144 páginas lançado em 2006, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. ISBN: 85-7522-100-0 [ESGOTADO]
Expressões Regulares - Guia de Consulta RápidaLEIA ONLINE

Livro de 96 páginas lançado em 2001, escrito em uma linguagem descontraída e didática, que leva o leitor a uma viagem ao mundo das Expressões Regulares. Tem o formato "de bolso", fácil de carregar. Também pode ser consultado integral e gratuitamente na Internet. ISBN: 85-7522-011-X [ESGOTADO]

Referências do livro

Vídeo-aulas que fiz

  • Como extrair e formatar texto usando Expressões Regulares (14 minutos, blog, YouTube)
  • Expressões Regulares - Quantificadores Gulosos (8 minutos, blog, YouTube)

Artigos que escrevi

  • Conhecendo as Expressões Regulares (Apostila em PDF) ★ Apostila introdutória sobre Expressões Regulares, que apresenta o conceito e explora todos os metacaracteres básicos, um a um e de maneira sequencial. A explicação se dá por exemplos que podem (devem) ser executados pelo leitor na linha de comando. Boa para quem nem faz idéia do que sejam as expressões e quer aprender a usá-las.

  • Resumo das Expressões Regulares (cheat sheet, PDF) ★ Várias tabelas resumindo os metacaracteres, escapes, classes POSIX, precedência e outros detalhes das Expressões Regulares. Tudo numa única página A4, pronta para imprimir.

  • Expressões regulares em bancos de dados SQL Artigo que explica como usar as expressões nos principais bancos de dados: Oracle, PostgreSQL, MySQL, MariaDB e SQLite.

  • Em regex, nem sempre menos é mais Artigo que demonstra porque é importante fazer uma expressão legível, mesmo que não seja a versão mais eficiente.

  • Escreva corretamente: CaracterE cUringa Não diga "coringa" quando o certo é curinga.
    Não diga "caracter", "carácter" ou "caráter" quando o certo é caractere.

  • Meus 10 anos de Expressões Regulares Texto recheado de nostalgia e reflexões, que conta os meus 10 anos de Expressões Regulares. Como fui conhecê-las, como foi o aprendizado, o programa txt2regex e como acabei escrevendo um livro (mais de um!) sobre o assunto.

  • Prompt-doc: Expressões Regulares - Introdução Documento que registra o histórico da linha de comando de uma palestra sobre Expressões Regulares ministrada pelo Aurelio para os funcionários da Conectiva sobre em dezembro de 2003. Mostra um por um todos os metacaracteres e suas funções.

  • Expressões Regulares - Como "farejar" um texto e aumentar a produtividade Artigo publicado na Revista do Linux #3 Meu primeiro artigo sobre Expressões Regulares, escrito em 2000. É uma introdução ao assunto, explicando o básico e demonstrando com exemplos o uso de quatro metacaracteres: . + * []

  • Expressões Regulares II - Conhecendo as ferramentas complementares Artigo publicado na Revista do Linux #7 Meu segundo artigo sobre Expressões Regulares, escrito em 2000. É uma continuação do artigo introdutório, agora apresentando conceitos mais avançados como as chaves, o opcional, os grupos e retrovisores. Também conta com uma tabela de exemplos.

  • Como casar um número IP (regex) Artigo bem antigo (e um pouco confuso) ensinando a montar uma expressão regular para casar um número IP válido.

Grupo no Telegram

Quer trocar uma ideia em português sobre regex? Junte-se a nós no https://telegram.me/ExpressoesRegulares

Lista de discussão

Para conversar com outros amiguinhos que também gostam das expressões, assine a lista sed-br. Lá o papo é em português, sobre Sed e Expressões Regulares.

Links em português

Conceitual

Programação

  • Usando Expressões Regulares na Linguagem C por Thobias Salazar Trevisan Um excelente tutorial do Thobias, explicando em detalhes com usar as Expressões Regulares em C, com vários exemplos de código coloridos.

  • Expressões Regulares em C - Linux Gazette traduzido por Fabio Utzig Artigo traduzido do Linux Gazette que explora a biblioteca de Expressões Regulares fornecida com a GNU libc.

  • Perl - Expressões Regulares por Ednardo Lobo Artigo que ensina e demonstra através de exemplos como utilizar as expressões em Perl.

  • Expressões Regulares com Java por Lucas de Castro Tutorial com introdução às expressões e bastante exemplos da classe String e do pacote java.util.regex.

  • APIs de Expressões Regulares para Java por LazyDog Um comparativo explicando as características das sete (7!!!) APIs de Expressões Regulares disponíveis para programadores Java.

  • PHP - Validação E Exibição De Ceps por Klaus Roberto de Paiva Um tutorial de como usar as funções de Expressões Regulares no PHP, focado na validação de CEP.

  • Expressões Regulares no PHP Portal para as funções que lidam com Expressões Regulares na linguagem PHP.

  • Validação de formulários HTML com JavaScript por Márcio d'Ávila Documento com exemplos de validação de formulários na linguagem JavaScript, utilizando Expressões Regulares. Muito bem escrito, explicando em detalhes as expressões utilizadas.

  • Expressões Regulares em JavaScript por Fellipe Partindo um caso específico de validação de código alfanumérico, apresenta as Expressões Regulares e mostra como implementar o código em JavaScript. O artigo está bem fácil de entender, recomendado para novatos no assunto.

Editores de Texto

Banco de dados

Outros

Desaparecidos

Estes links um dia existiram, mas agora sumiram da Internet. Se você é o autor de um deles, ou sabe onde está a sua nova localização, me avise! Meus contatos estão lá no rodapé desta página. Obrigado.

Testadores online

  • Regex101 ★ Atualiza enquanto digita, destaca texto casado, mostra o conteúdo dos grupos, faz substituição de textos, referência rápida, sintaxes JavaScript, Python e Perl.

  • RegexPal ★ Atualiza enquanto digita, destaca texto casado, referência rápida, sintaxe JavaScript.

  • Debuggex ★ Cria um gráfico de sua expressão regular. Bom para entender como sua expressão é interpretada pelo computador. Sintaxe JavaScript, Python e PCRE.

  • Testador de Expressões Regulares ★ Interface em português, atualiza enquanto digita, mostra se casou ou não usando cores, sintaxe JavaScript.

  • Rubular ★ Atualiza enquanto digita, destaca texto casado, referência rápida, sintaxe Ruby.

  • RegExr Atualiza enquanto digita, destaca texto casado, referência rápida, precisa do Flash Player 9, sintaxe ActionScript.

  • Regex Powertoy ★ Atualiza enquanto digita, destaca texto casado, referência rápida, sintaxe Perl e Java.

  • regex ★ Atualiza enquanto digita, destaca texto casado, referência rápida, mostra código pronto da linguagem, sintaxe JavaScript, Perl, Python e PHP.

  • HiFi RegExp Tool ★ Atualiza enquanto digita, destaca texto casado, referência rápida, exemplo de código em JavaScript, sintaxe JavaScript.

  • JRX Atualiza enquanto digita, destaca texto casado, referência rápida, sintaxe JavaScript.

  • Nregex Atualiza enquanto digita, destaca texto casado, referência rápida, sintaxe C#.NET.

  • Regex Mate Atualiza com botão (estilo console), sintaxe JavaScript.

  • My Regex Tester Destaca texto casado, explica a expressão, otimiza a expressão, mostra código pronto da linguagem, sintaxe JavaScript, Java, VB.NET, C#.NET, PHP e ASP.

  • Regexper ★ Cria diagramas que descrevem o funcionamento de uma expressão regular.

  • Regular Expression Generator ★ Gerador de Expressões Regulares. Você digita o texto que quer casar e ele gera um programa pronto para extrair este texto, em várias linguagens, entre elas Python, Perl, PHP, Ruby, Java e javaScript.

  • Regular Expression Analyzer ★ Analisador de expressões, que gera uma árvore de sua estrutura, ficando fácil entendê-la. Sintaxe Java, JavaScript e Perl.

  • reAnimator Cria um gráfico (autômatos finitos) de sua expressão regular. Bom para entender como sua expressão é interpretada pelo computador.

  • Regexplained Fontes gigantescas, design estiloso. Bom para testes rápidos com strings pequenas.

  • RegexOne ★ Tutorial com exemplos interativos que a cada lição vai te ensinando um pouco sobre as expressões.

Documentação oficial

Mais informações (inglês)

  • Wikipedia: Regular Expression A página sobre as expressões na Wikipedia está bem completa, com história, detalhes técnicos e vários links para mais informações. É um ótimo ponto inicial de pesquisa sobre o assunto.

  • RegexOne Interactive Tutorial Um tutorial interativo que ensina deixa que o aluno pratique ao final de cada lição.

  • Learn regular expressions in about 55 minutes Excelente tutorial que segue progressivamente, explicando de maneira bem concisa os conceitos. Bom para quem já usa regex, mas de maneira bem superficial, sem entender direito como funciona.

  • Regular-Expressions.info Site dedicado exclusivamente a regrex. É feio, esquisito, lotado de anúncios. Mas o conteúdo vale a pena. Saia clicando nos links dele e se perca em dezenas de tutoriais e artigos que explicam vários conceitos das expressões, e como usá-las em diferentes linguagens e ferramentas.

  • RexEgg Outro site dedicado a regex. Este é mais moderninho e tenta ser engraçadão. Acho ele meio bagunçado demais, mas tem muitas dicas preciosas se garimpar.

  • Mastering Regular Expressions "A Bíblia" de Expressões Regulares, o livro definitivo. Conteúdo abrangente e detalhado, info bem fundo no conceito e implementação. Leitura altamente recomendada para aqueles que querem se tornar gurus nas expressões.

  • Beginning Regular Expressions Livro novo lançado em 2005 que pretende ser menos focado em UNIX/Perl do que "A Bíblia". O interessante é que ele usa o OpenOffice para testar as expressões, sendo mais amigável ao leitor.

  • Rosetta Code — Regular expressions Para programadores, esta página é uma coletânea de códigos em várias linguagens, mostrando como casar e substituir um texto.

  • Regular Expression Library Centenas de Expressões Regulares prontas para usar, enviadas por colaboradores. Tem explicação das ER, porcentagem de acerto e testes. Tudo uma ferramenta de busca para encontrar as expressões. Vale a visita!

  • The Regex Coach Programa que auxilia na criação e testes de Expressões Regulares. Para Linux, BSD e Windows.

  • The Regulator Programa que auxilia na criação e testes de Expressões Regulares. Somente para Windows.

  • kregexpeditor Programa que auxilia na criação de Expressões Regulares. Faz parte do KDE, no Linux.

  • Kodos Programa gráfico em Python. Rápido e leve, mesmo para buscas e substituições em textos extensos, além de ter um dicionário para consultas rápidas.

Avançado

  • The Stack Overflow Regular Expressions FAQ FAQ com trocentos links para artigos explicativos (e às vezes densos) sobre o assunto. Se você começar no sábado, ainda vai estar lendo no domingo à noite… Então prepare-se para uma grande viagem. Não estou dizeno que vai ser fácil ;)

  • How Regexes Work Texto denso e técnico que ensina a implementar um parser de Expressões Regulares. Leia sob sua conta e risco ;)

  • Implementing Regular Expressions Série de quatro artigos explode-cabeça, altamente acadêmicos, para aqueles meganerds que querem realmente mergulhar no assunto e aprender detalhes de como implementar um motor de regex, diferenças entre tipos de motores, implementações históricas e tudo mais. Reserve HORAS de sua vida, você será dragado, sem chance de escapar. Escritos por Russ Cox.

  • The true power of regular expressions Para os acadêmicos de plantão: hierarquia de Chomsky para os tipos de linguagens, e a tentativa de usar regex nelas. Artigo denso, porém muito bem escrito e explicado.

  • Como casar um endereço de email Parece fácil, mas fazer uma regex para casar endereços de email não é uma tarefa trivial. O que é considerado um email "válido", varia, pois o padrão (RFC 5322) aceita vários formatos não utilizados normalmente, então você é quem tem que decidir quais formatos tua regex suportará. Este artigo explica sobre este dilema e dá a dica mais acertada: faça uma regex simples e mande um email de confirmação para validá-lo.

  • Regular expression denial of service (ReDoS) Você sabia que há algumas expressões que são meticulosamente preparadas para ter seu processamento bem complexo e demorado, e podem ser usadas para fazer Denial Of Service em servidores?

  • Catastrophic Backtracking Relacionado com o item anterior, aqui está uma explicação de como determinadas expressões podem ser muito complexas para processar devido ao funcionamento dos motores modernos, com backtracking.

Divirta-se!

Nerdson/Hacktoon

Aproveite para visitar o site do Nerdson e ler o artigo introdutório que acompanha a tirinha original. É de fácil entendimento e mostra vários exemplos de uso das Expressões Regulares.

xkcd

Autor desconhecido

Regex-cruzadas

Até onde sei, essa ideia de fazer palavras cruzadas com regex apareceu primeiro no MIT Mystery Hunt de 2013. Era um arquivo PDF, bom pra imprimir e rabiscar, mas bem chato de preencher no computador. Na época, essa foi minha solução pra ele:

Melhor mesmo é usar a versão JavaScript, que é bem mais prática de preencher e sinaliza com cores quando você acerta uma fileira. Resolvi me divertir com ela em maio de 2021 e dessa vez foi mais rápido, levei 1h30:

Mas não precisa comecar por esse, que é muito grande e complicado. Tem um site inteiramente dedicado a gerar palavras cruzadas com regex, e você pode escolher a dificuldade: http://regexcrossword.com

E já que estamos aqui, que tal uma explicação de como fazer um programa que resolve estes quebras-cabeças?

Outros

  • You can't parse (X)HTML with regex Resposta muito criativa (e trabalhosa!) sobre a velha pergunta de fazer parsing de HTML com regex.

  • Origem da frase “Now you have two problems” Você já deve ter visto essa frase por aí, que diz: Algumas pessoas, quando encontram um problema, pensam “já sei, vou usar expressões regulares”. Agora elas têm dois problemas. O Jeffrey Friedl rastreou a origem dessa citação e fez um post a respeito. Nos comentários, aparecem alguns famosos, inclusive o Jamie Zawinski (jwz), responsável pela citação original.

— EOF —