Introdução
Expressões regulares foram criadas para encontrar padrões em strings e são suportadas por várias linguagens de programação, como PHP, Java, Python e C++. Elas também são suportadas por várias ferramentas diferentes, como IDEs (pela funcionalidade de search e replace, por exemplo) e alguns programas da linha de comando.
Nos tutoriais de expressões regulares, podem ser usadas duas abreviações que significam expressões regulares: regex e regexp. Também é importante entender o conceito de engine, que será citado nos tutoriais: uma engine faz a interpretação de expressões regulares. Dois exemplos são as engines de PHP e Javascript.
Algumas coisas que forem mostradas aqui não vão funcionar em todas as engines, porque não há um único padrão de implementação seguido à risca por todas, o que causa diferenças de funcionalidades e também de sintaxe. Mas fique tranquilo, porque você vai encontrar muito mais semelhanças do que diferenças entre as engines.
Dica: o site Regex Crossword é muito bom. Ele tem palavras cruzadas com expressões regulares ao invés de palavras. Muito bom pra que você fixe o que você aprender nos tutoriais. Ele tem vários níveis de dificuldade.
Além das palavras cruzadas criadas pelo próprio site, os usuários podem criar suas próprias palavras cruzadas. Aí, você pode tanto fazer palavras cruzadas que outros usuários criaram, como também criar as suas próprias para que os outros jogem.
Como as expressões regulares foram criadas?
Nos anos 40, Warren McCulloch e Walter Pitts desenvolveram modelos de como eles acreditaram que o sistema nervoso funcionava no nível do neurônio. Algum tempo depois, o matemático Stephen Kleene descreveu esses modelos em uma álgebra que ele chamou de regular sets. Ele inventou uma notação simples para expressar esses regular sets e os chamou de expressões regulares.
Talvez o primeiro uso computacional publicado de expressões regulares seja um artigo de 1968, publicado por Ken Thompson, chamado de "Regular Expression Search Algorithm".