De acordo com Aurelio Jargas , esse método formal para especificar uma padrão de texto surgiu em 1943 com estudo, publicado por 2 neurologistas, que tratava do funcionamento de neurônios. Então, um matemático usou a álgebra para descrever os modelos do estudo médico, com símbolos para representar os grupos regulares, em inglês “regular sets”. Com esses símbolos nasceram as expressões regulares que foram estudadas por matemáticos.
Aos 25 anos, a regex foi usada em computadores em um algoritmo de busca do editor de textos qed, no sistema operacional Unix. Desse editor, que tinha em sua sintaxe g / RE / p – “Global Regular Expression Print”, daí surgiu o grep, para em seguida vir o egrep.
Aos 43 anos, em 1986, usaram a linguagem C para fazer o pacote regex, daí se tornou popular, pois era um aplicativo opensource. É algo com 34 anos, algo estável, inalterado. Mas, de certa forma, um pouco assustador.
Com expressões regulares a gente pode fazer um match,como em aplicações de relacionamento uma regex encontra, equipara, confere uma expressão, como numa autenticação de usuário em um caixa automático.
Jargas fala em casar um padrão, que pode ser uma palavra, várias, uma linha vazia, número, algo que precise ser encontrado pela regex.
Ao lidar com textos na busca ou validação de certo “pattern”, você terá algo bem diverso como data, hoário, CPF, CNPJ, e-mail, endereço de site, nome de pessoa, número IP, nome de usuário e senha, dados entre tags html, dados que estão no início ou no fim de uma linha etc.
Ferramentas. Algumas ferramentas on-line podem auxiliar você a lidar com expressões regulares. A regex101 traz um ótimo tutorial, um testador de regex e uma séries de dicas de regex. Com RegexHero você testa e depura seus padrões regex por meio de uma interface de usuário muito intuitiva. Ele também possui uma ótima seção de referência que explica todos os fundamentos do regex e além, e um gerador de regex para ajudá-lo a criar seus próprios padrões. Já o RegexBuddy você tem uma ótima opção para levar a sério o aprendizado e o uso do regex. Possui um editor poderoso, uma enorme seção de referência e um testador integrado. Ele também oferece uma avaliação gratuita, para que você possa experimentá-lo antes de comprá-lo. Diante do desfio de aprender a trabalhar com expressões regulares a RegexPlanet é um excelente recurso para aprender sobre regex. Possui um tutorial bem organizado, bem como uma referência de regex e uma uma série de dicas.
Os metacaracteres
Cada metacaractere-padrão possui uma função específica, que pode mudar em contextos diferentes, fazendo algo complexo combinando esses elementos:
. ? * + $ | [ ] { } ( ) \
Além desses aí há os metacacteres estendidos, para usos mais complexos.
Metacarctere | Nome |
. | Ponto |
[ ] | Lista |
[^] | Lista negada |
? | Opcional |
* | Asterisco |
+ | Mais |
{ } | Chaves |
^ | Circunflexo |
$ | Cifrão |
\b | Borda |
\ | Escape |
| | Ou |
( ) | Grupo |
\1 | Retrovisor |
Os metacaracteres são conhecidos assim. Eles também são classificados por funções como representantes, quantificadores, âncoras e outros:
Representantes
Metacaractere | Nome | Função |
. | Ponto | Um caractere qualquer |
[…] | Lista | Lista de caracteres permitidos |
[^…] | Lista negada | Lista de caracteres proibidos |
Quantificadores
Metacaractere | Nome | Função |
? | Opcional | Zero ou um |
* | Asterisco | Zero, um ou mais |
+ | Mais | Um ou mais |
{n,m} | Chaves | De n até m |
Âncoras
Metacaractere | Nome | Função |
^ | Circunflexo | Início da linha |
$ | Cifrão | Fim da linha |
\b | Borda | Início ou fim de palavra |
Outros
Metacaractere | Nome | Função |
\c | Escape | Torna literal o caractere c |
| | Ou | Ou um ou outro |
(…) | Grupo | Delimita um grupo |
\1…\9 | Retrovisor | Texto casado nos grupos 1…9 |