O Guia do Iniciante para Expressões Regulares

Intro To Regex Featured

Você já tentou encontrar um padrão recorrente em um texto? Você pode ter usado algo como a função de busca no seu navegador ou processador de texto, mas quando precisa encontrar algo mais complexo, pode ser como procurar uma agulha no palheiro.

Felizmente, existe uma maneira de identificar padrões precisos no texto até mesmo no nível do caractere. Isso é chamado de expressões regulares (RegEx), e permite que você se torne um mestre na busca por textos.

Leia também: Como Usar Expressões Regulares para Melhorar a Produtividade em Suas Tarefas Diárias

Onde eu posso usar RegEx?

Embora o Unix e o Linux as tornassem populares, expressões regulares estão disponíveis em uma variedade de pacotes, incluindo o Microsoft Word.

regular-expressions

Expressões regulares são mais notavelmente usadas em vários programas do Linux, incluindo grep, Awk e Sed.

Por exemplo, você pode querer verificar os dispositivos USB no seu PC. Usando lspci, você verá uma lista de todos os dispositivos, e terá que localizar as entradas USB por conta própria. Você poderia usar o seguinte para mostrar apenas os dispositivos USB:

lspci|grep"USB"

Este é o exemplo mais simples de RegEx em ação. É a maneira mais popular de usar expressões regulares no terminal, mas não é a única. Hoje, você pode encontrar suporte a RegEx em muitos tipos diferentes de softwares, desde editores de texto até gerenciadores de arquivos.

Encontrando Padrões

Você provavelmente já usou o caractere *, que atua como um caractere curinga ao selecionar arquivos ou pastas no terminal. Por exemplo, para listar todos os arquivos JPG em uma pasta, você poderia usar:

ls*.jpg

O equivalente em RegEx do acima seria:

ls|grep-E"\.jpg"

Intro To Regex Filter Jpgs

Para buscar tanto arquivos jpg quanto png, use:

ls|grep-E"(\.jpg|\.png)"

Intervalos

Se você quiser buscar um intervalo específico de caracteres em vez de um padrão, pode fazer isso definindo-o entre colchetes. Se, por exemplo, você usar [a-z] como seu padrão, isso corresponderá a qualquer string composta por letras minúsculas do alfabeto.

Como você deve ter adivinhado, [A-Z] selecionaria apenas letras maiúsculas. Para escolher qualquer intervalo de letras, tanto maiúsculas quanto minúsculas, a expressão mudaria para [a-zA-Z].

Para localizar um número específico de instâncias do seu padrão, você pode declará-lo entre chaves. {5} retornaria cinco ocorrências do seu padrão. Você também pode usar intervalos de números, então {5,10} apresentaria de cinco a dez instâncias.

Metacaracteres

Em expressões regulares, você também pode buscar partes de uma string com dois caracteres chamados metacaracteres. Eles são semelhantes às correspondências de curinga que você pode ter usado no shell.

O principal deles é o ponto simples, que representa qualquer outro caractere único. Se você usasse o padrão c.ll, corresponderia a “cell”, mas também a “cull” e “call”.

Ao inserir um asterisco após um ponto, você pode usá-lo para corresponder a um número infinito de caracteres. Por exemplo, .*board será uma correspondência para “keyboard” e “skateboard”, mesmo que “key” e “skate” tenham um número diferente de letras.

Escape

Você pode ter reparado que em nosso exemplo, onde selecionamos diferentes tipos de arquivos de imagem, usamos barras invertidas antes do ponto (“.jpg”). Assim é como você escapa caracteres especiais em RegEx.

Se não as usamos, nosso padrão não corresponderia apenas às extensões dos arquivos, como “.jpg” e “.png”, mas também corresponderia a “ajpg” e “opng”. Lembre-se, . é um curinga que corresponde a qualquer caractere.

Âncoras e Limites

Âncoras e limites permitem que você defina mais precisamente o que está buscando.

Para encontrar apenas a palavra individual “computador”, sem nenhum outro caractere anexado antes ou depois, você deve definir o padrão como \.

Você também pode buscar especificamente por padrões que aparecem no início ou no final da linha. Isso é conseguido com os caracteres ^ e $ respectivamente.

Então, se você quiser encontrar apenas as entradas onde a palavra “computador” aparece no início de uma linha, seu padrão seria ^computador. Para o oposto, quando está no final da linha, o padrão mudaria para computador$.

Essas são as regras simples do RegEx, que você também pode misturar para encontrar precisamente os padrões que está buscando. Você pode buscar por intervalos de caracteres no início de uma linha ou palavras alternadas no final, datas específicas, ou um intervalo de anos, usando uma única string de texto.

Não se esqueça de conferir nosso guia de referências rápidas sobre Expressões Regulares para dominar expressões regulares.