layout |
---|
default |
Aprenda a usar e aproveitar ao máximo as expressões regulares
Quem não sabe nada ou acha que as expressões regulares é uma anciã linguagem de programação, deve começar pela parte 1 e após ler todo a parte básica você terá os seguintes entendimentos.
- Enteder o que são expressões regulares.
- Conhecer os metacaracteres.
- Criar suas próprias expressões.
Várias linguagens de programação possuem suporte às expressões regulares, seja nativo, como módulo importável, como biblioteca carregável, como objeto instanciável, como... Ou seja, opções há várias. Cada linguagem tem sua maneira específica de receber e tratar ERs, vamos dar uma geral nas mais usadas.
Não há dificuldade em criar e testar suas ER. No site Regex 101 é possível testar as expressões regulares em diversos sabores: Python, Ruby, .NET, GO, Haskell, Java, JavaSript, etc… Nesse tutorial só vai ser usado o aplicativo egrep para testarmos os exemplos, se quiser algo mais trabalhado baixe o editor de texto EditPad Lite.
Caso opite pelo egrep você vai precisar do Linux ou algum terminal que tenha o egrep, como o git-bash. Todos os aquivos usados estão na pasta examples.
No terminal digite o comando egrep <expressão> <arquivo>.
egrep --color=auto 'doce.' examples/basico/doce.txt
O flag --color=auto
após o egrep serve para colorir os macthes e só precisa coloca-lo a primeira vez que utilizar o egrep, depois pode omitir dos exemplos futuros. Sempre que a saída voltar ao normal utilize esse flag, não é legal ver a saída toda em preto e branco.
Metacaractere | Nome | Dicas |
---|---|---|
. | Ponto | Curinga de um caractere |
[ ] | Lista | Dentro todos são normais, traço é intervalo ASCII, [:POSIX:] |
[^] | Lista negada | Sempre casa algo, [^[:POSIX:]] |
? | Opcional | 0 ou 1, pode ter ou não |
* | Asterisco | 1 ou mais, repetem em qualquer quantidade |
+ | Mais | 1 ou mais, repete em qualquer quantidade, pelo menos uma vez |
{ , } | Chaves | Número exato, mínimo, máximo, ou uma faixa numérica |
^ | Circunflexo | Casa o começo da linha, especial no começo da ER |
$ | Cifrão | Casa o fim da linha, especial no fim da ER |
\b | Borda | Limita uma palavra (letras, números, e sublinhado) |
\ | Escape | Escapa um meta, tira seu poder, escapar a si mesmo \ |
| | Ou | Indica alternativas, poder multiplicado pelo grupo |
( ) | Grupo | Agrupa, é quantificável, poder conter outros grupos |
\1 | Retrovisor | Usado com grupo, máximo 9, conta da esquerda para direita |
.* | Curinga | Qualquer coisa, o tudo e o nada |
?? | Opcional | Não-guloso, 0 ou 1, casa o mínimo possível |
*? | Asterisco | Não-guloso, 0 ou mais, casa o mínimo possível |
+? | Mais | Não-guloso, 1 ou mais, casa o mínimo possível |
{ }? | Chaves | Não-guloso, numérico, casa o mínimo possível |
Classe POSIX | Similar | Significa |
---|---|---|
[:upper:] | [A-Z] | Maiúsculas |
[:lower:] | [a-z] | Minusculas |
[:alpha:] | [A-Za-z] | Maiúsculas/Minusculas |
[:alnum:] | [A-Za-z0-9] | Letras e números |
[:digit:] | [0-9] | Números |
[:xdigit:] | [0-9A-Fa-f] | Números hexadecimais |
[:punct:] | [.,!?: ...] | Letras e números |
[:blank:] | [ \t] | Espaço e Tab |
[:space:] | [ \t\n\r\f\v] | Caracteres brancos |
[:cntrl:] | Caracteres controle | |
[:granph:] | [^ \t\n\r\f\v] | Caracteres imprimíveis |
[:print:] | [^\t\n\r\f\v] | Imprimíveis e o espaço |