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.
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.
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:
- 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. - Processamento de Texto e Expressões Regulares — Aprenda ferramentas como
grep,sedeawke use expressões regulares para manipular e corresponder textos. - Extração de E-mails e Números — Neste desafio, você aprenderá a usar
grepe 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