regex (Expressões Regulares)
100%

Text-Fu Avançado · Lição 1

regex (Expressões Regulares)

Aprenda como âncoras, conjuntos de caracteres, repetições e variantes de regex controlam a correspondência de textos.

Expressões regulares, frequentemente abreviadas como regex, descrevem padrões de texto. Ferramentas como grep, sed e awk usam regex, mas a sintaxe aceita pode variar; por isso, sempre identifique a ferramenta e a variante de expressão regular.

O GNU grep usa expressões regulares básicas (BRE) por padrão e expressões regulares estendidas (ERE) com -E. Esta lição apresenta construções compartilhadas pelas duas e depois destaca algumas extensões comuns de ERE.

Use esta entrada nos exemplos:

sally sells seashells
by the seashore

Correspondência de Texto Literal

A maioria dos caracteres comuns corresponde a si mesma. O padrão seashells seleciona uma linha que contenha essa sequência exata em qualquer posição:

$ grep 'seashells' sample.txt
sally sells seashells

Coloque padrões regex entre aspas para que o shell não os expanda nem os divida antes que a ferramenta os receba. Regex também é diferente da expansão de caminhos do shell: em uma regex, * repete o átomo anterior; em um glob do shell, * é por si só um curinga para uma sequência de caracteres de um caminho.

O que * faz em uma expressão regular como ab*?

Ancoragem de uma Correspondência

Fora de uma expressão entre colchetes, ^ no início de um padrão ancora a correspondência no início da linha:

^by

A âncora $ corresponde ao final de uma linha:

seashore$

Combine as duas âncoras quando a linha inteira precisar se ajustar ao padrão:

^by the seashore$

Qual padrão corresponde apenas a uma linha cujo texto completo é by the seashore?

Correspondência de um Caractere

O ponto corresponde a um caractere no modo comum de regex orientada por linhas:

b.

Isso corresponde a by, mas também pode corresponder a ba ou b7. Não corresponde a um b isolado, pois exige um caractere depois dele. Para corresponder a um ponto literal, use o escape \. ou coloque-o em uma expressão adequada entre colchetes.

Qual cadeia não corresponde ao padrão de linha completa ^b.$?

Uso de Expressões entre Colchetes

Uma expressão entre colchetes corresponde a um caractere de um conjunto especificado:

s[ae]lls

Isso corresponde a sells ou salls nessa posição.

Quando ^ é o primeiro caractere depois de [, ele nega o conjunto:

s[^e]lls

Isso corresponde a salls, mas não a sells, pois o caractere depois do primeiro s não pode ser e.

Ao que [^e] corresponde?

Intervalos podem descrever caracteres entre dois extremos:

d[a-c]g

Isso pode corresponder a dag, dbg ou dcg. O comportamento dos intervalos pode depender da ordenação do locale. Classes como [[:lower:]], [[:upper:]] e [[:digit:]] muitas vezes expressam a intenção com mais clareza.

Repetição e Combinação de Padrões

Tanto em BRE quanto em ERE, * significa zero ou mais repetições do átomo anterior:

seashells*

Isso corresponde a seashell seguido de zero ou mais caracteres s adicionais. No modo ERE com grep -E, alguns operadores comuns são:

  • +: uma ou mais repetições;
  • ?: zero ou uma repetição;
  • |: a expressão à esquerda ou à direita;
  • (...): agrupa expressões.

Por exemplo:

$ grep -E '^(cat|dog)s?$' animals.txt

Esse comando seleciona linhas completas iguais a cat, cats, dog ou dogs. No modo BRE, esses operadores possuem regras de escape diferentes; portanto, não copie um padrão entre variantes sem verificá-lo.

Qual comando ativa a sintaxe de regex estendida para o padrão ^(cat|dog)s?$?

Para praticar a seleção com regex nas ferramentas de texto do Linux, experimente estes laboratórios:

  1. Pesquisa de Texto com grep no Linux — Neste laboratório, você aprenderá a pesquisar textos em arquivos de um sistema Linux com o comando grep. Você realizará pesquisas básicas, exibirá números de linha, usará âncoras como ^ e $ para corresponder a posições nas linhas e aplicará expressões regulares básicas e estendidas para correspondências complexas de padrões.
  2. Processamento de Texto e Expressões Regulares — Aprenda ferramentas como grep, sed e awk e use expressões regulares para manipular e corresponder textos.
  3. Extração de E-mails e Números — Neste desafio, você aprenderá a usar grep e expressões regulares para extrair endereços de e-mail e números de um arquivo, demonstrando habilidades essenciais de processamento de texto no Linux.

Lição concluída

Você concluiu regex (Expressões Regulares)

Agora você sabe ler e criar expressões regulares fundamentais orientadas por linhas.

  • Diferencie operadores regex de curingas de caminhos do shell.

  • Ancore correspondências no início ou no final de uma linha.

  • Corresponda a um caractere com ponto ou expressão entre colchetes.

  • Negue conjuntos e use classes de caracteres dependentes do locale.

  • Escolha conscientemente a sintaxe BRE ou ERE.

Salve seu progresso

Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.

Criar uma conta gratuita
Próxima Lição
Voltar para Text-Fu Avançado