O documento discute expressões regulares (ER), sua história, usos básicos como grep e sed, aplicações em programação e desafios. ER permitem procurar padrões flexíveis em strings e editar arquivos de forma automatizada.
1. ˜
Expressoes regulares no Linux
´caro Medeiros
I
ˆ ¸˜
Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao
Debian Festival 3.0, 16 de agosto de 2008
2. ¸˜
Introducao
´ ´
Historico rapido
¸˜
Motivacoes
˜
O que sao ER?
´
Usos basicos
grep
sed (Stream EDitor)
¸˜
Uso em linguagens de programacao
Java
Perl
DO IT YOURSELF!
3. Era uma vez...
Termo apareceu com dois neurologistas
ˆ
Linguagens formais e automatos
˜
quem nao estudou, deveria
¸˜ ´
50s - Kleene (descricao formal matematica)
orientando do Church, regular sets
˜
Linguagem SNOBOL - Pioneira em casamento de padroes
˜
nao exatamente ER
Editor de textos Unix ed
¸˜
usando a notacao de Kleene
grep (Global Regular Expression Print) - nome herdado
do comando g/re/p do ed.
4. ´
Mais historico
¸˜
sed (Strem EDitor) - Evolucao do grep
sed - Facilitando a vida dos coitados dos sysadmins
desde 1973
˜
Expressoes regulares nas linguagens:
C (regex) - Uma das primeiras
Perl - built-in
Java - API’s e classes
Javascript
E por a´ em diante...
ı
5. Vantagens: Pra que ER?
´
Rapido pra processar strings fazendo casamento de
˜
padroes (pattern matching)
Formalismo bem conhecido
Produtividade
´
sysadmin com conhecimento de ER e melhor!
Muitos softwares a usam (processadores de texto, IDE’s,
Google, etc), mas poucos conhecem como aplicar ER.
passar horas pra resolver problemas simples
˜
Veremos mais vantagens a seguir, nao perca.
6. Desvantagens
`
Sintaxe as vezes pouco intuitiva
˜
Por isso, pra quem nao conhece ER: writability ruim,
´
legibilidade tambem.
7. ¸˜
Definicoes
´ ¸˜ ˜
Metodo formal para especificacao de padroes de texto,
constitu´do de:
ı
Strings
¸˜
S´mbolos com funcoes especiais
ı
Grupos desses s´mbolos
ı
˜
Expressoes indicando regras.
˜
Exemplo: todas as palavras no texto com o padrao A duas
vezes seguidas, sem espacos, ou seja, palavras com a
¸
string AA.
8. ´
Usos basicos
ˆ ˜
Procurar um texto que voce nao lembra exatamente como
´ ´ ¸˜
e, mas tem ideia das variacoes poss´veis
ı
Procurar strings em locais espec´ficos da linha ou da
ı
palavra (sysadmins, acalmai-vos!)
vi /etc/apt/sources.list
˜
Programadores especificando padroes complexos -
([Rr]ecuperac˜o|[Ee]xtrac˜o de Informac˜o).
¸a ¸a ¸a
9. ¸˜
Apresentacao do grep e toy example
Programa simples, originalmente feito pro Unix
´ ˜
Retorna as linhas que contem um certo padrao de string
entrado
Uso comum:
cat /etc/apt/sources.list | grep restricted
10. Mais exemplos de grep
# Exibe as palavras que comecam com cat
grep -E ’<cat’ cats.txt
11. Pra fechar o grep
# Retorna as Pamelas da minha lista de telefone (acentos
ignorados)
cat lista.txt | grep -E ’".*[pP]am.*"’
12. ¸˜
Apresentacao - SED
˜
Editor de textos nao interativo
¸˜ ´
Edicao automatizada de documentos, atraves de regras
Quase uma LP
Uso pra um sysadmin: Verificar automaticamente senhas
em branco, apenas com numeros, apenas com letras!
´
13. ˜
Quando nao usar
Para editar apenas um documento
¸˜
Alteracoes simples que podem ser feitas num editor de
texto “normal”.
14. Como funciona
Filtro: Entrada X - Sa´da Y
ı
Conversor: Entrada X - Sa´da X’
ı
Enderecos ou documento inteiro
¸
Uso intensivo de ER.
15. Exemplos de brinquedo II - Em sed
Imprimindo linhas (p de print)
sed ’p’ cats.txt
˜
Script que nao faz nada!
sed ’1,2d’ cats.txt > cats2.txt
?
16. Mais exemplos
´ ´
Ta mas, qual e a sintaxe mais usada em sed? Comando s
(substitute)
sed ’s/cat/dog/g’ cats.txt
19. Perl, o mestre das strings e das ER
Sintaxe de ER built-in
if (grep /([Cc]omput|[Ii]nformat)/, @$c) {
$text = $page->text;
$title = $page->title;
}
20. Que problemas podemos resolver?
Que arquivos de configuracao ¸˜
podemos modificar com sed
´
pra realizar tarefas basicas de
¸˜
administracao de sistema?