Escolar Documentos
Profissional Documentos
Cultura Documentos
Cap I Tulo 9788575223376
Cap I Tulo 9788575223376
Novatec
Dados
12-12812
CDD-005.115
ndices para catlogo sistemtico:
1. Expresses regulares : Cincia da computao
005.115
VC20121022
(CIP)
Captulo 1
Introduo
Ol. Que tal esquecer um pouco a rotina e a realidade e fazer uma viagem
ao interior de sua mente? Descobrir conceitos novos, diferentes. Ao voltar,
as coisas no sero mais to normais quanto antes, pois smbolos estranhos
faro parte de seu dia a dia.
Inspirado pelo funcionamento de seus prprios neurnios, descubra o
fascinante mundo abstrato das expresses regulares.
Objetivo
Neste nosso mundo tecnoinformatizado, onde o acesso rpido informao
desejada algo crucial, temos nas expresses regulares uma mo amiga, que
quanto mais refinada for sua construo, mais preciso e rpido ser o resultado, diferenciando aqueles que as dominam daqueles que perdem horas
procurando por dados que esto ao alcance da mo.
O assunto algo bem peculiar, pois apesar de a maioria das linguagens de
programao, programas e editores de texto mais utilizados possurem esse
recurso, poucos o dominam, principalmente pelo fato de a documentao
sobre o assunto, quando existente, ser enigmtica e pouco didtica, ou simplesmente se resumir a listagens, sem explicar os conceitos. Esta obra nasceu
dessa necessidade e tem como objetivo preencher essa lacuna, sendo uma
documentao completa e didtica para iniciantes, tipo tutorial, e um guia
de referncia para os j iniciados.
17
18
Expresses Regulares
Sobre o livro
A primeira parte o feijo com arroz, indicada queles que desconhecem ou
ainda no se sentem vontade para criar suas prprias expresses regulares.
Faremos um tour por todas as pecinhas que compem esse mundo fantstico,
explicando didaticamente, do zero, o que so, de onde vieram, para que servem
e como utiliz-las (Exemplos! Exemplos!).
Aps ler e entender essa primeira parte, algo como
^ *[A-Za-z0-9_]+:(.*)$
melhor que
.*:(.*):
Mas note que, tudo isso, sem viajar muito nos detalhes intrnsecos e sem
conhecer os becos escuros que voc talvez nunca precisar saber que existem.
Acima de tudo este um livro prtico. para ler e fazer suas expresses. Isso
no o torna superficial, apenas direto.
Captulo 1 Introduo
19
Com tudo isso, temos diversas tabelas e listagens que servem para ser consultadas rapidamente em caso de dvida ou esquecimento. Relaxe, no um
bicho de [0-9]+ cabeas... Vamos bater um papo descontrado sobre o assunto.
Ento respire fundo, desligue a TV, olhe fixamente para estas letras e vamos!
20
Expresses Regulares
Divertida? T louco?
Todos aqueles smbolos
estranhos...
Captulo 1 Introduo
21
Histria
Vem c, mas de onde
surgiram essas tais
expresses regulares,
tem algo a ver com
expresses matemticas?
22
Expresses Regulares
Curiosidade: apesar de esse assunto ser antigo, o que vamos ver aqui basicamente o mesmo que um estudante veria 25 anos atrs. um conceito
consistente, que no sofre alteraes com o passar do tempo.
Terminologia
E se eu te disser que ERs so metacaracteres que casam um padro? No
entendeu?
Bem, como expresses regulares um termo muito extenso, daqui em
diante, chamarei apenas de ER (-rre) para simplificar a leitura. Outras
nomenclaturas que podem ser encontradas em outras fontes so expreg,
regexp, regex e RE. Particularmente, regex uma boa escolha para usar em
ferramentas de busca na Internet.
E como estamos falando de termos, tem mais alguns novos que faro parte
de nossa conversa. Lembra que as expresses so formadas por smbolos e
caracteres literais? Esses smbolos so chamados de metacaracteres, pois
possuem funes especiais, que veremos detalhadamente adiante.
Outro termo que interessante e s vezes pode assustar um leitor meio
distrado o casar (match). Casamento aqui no juntar os trapos, mas,
sim, o ato de bater, conferir, combinar, igualar, encontrar, encaixar, equiparar.
como em um caixa 24 horas, em que voc s retirar o dinheiro se sua senha
digitada casar com aquela j cadastrada no banco.
Tambm temos o padro (pattern), que nosso objetivo quando fazemos
uma ER: casar um padro. Esse padro pode ser uma palavra, vrias, uma
linha vazia, um nmero, ou seja, o que quer que precise ser encontrado pela
nossa ER.
E ainda tem o robozinho, que uma referncia ao compilador e interpretador
das expresses regulares, o cdigo que vai ler, checar, entender e aplicar sua ER no
texto desejado. Como exemplo, para programas em C o robozinho a biblioteca
regex, que faz todo o servio.
Captulo 1 Introduo
23
Mmmmm
mmmmmm
Na prtica, as expresses
regulares servem para uma infinidade
de tarefas, difcil fazer uma lista, pois elas so
teis sempre que voc precisar buscar ou validar
um padro de texto que pode ser varivel, como:
mmmm...
data
horrio
nmero IP
nome de pessoa
endereo de e-mail
endereo de Internet
nome de usurio e senha
declarao de uma funo()
dados na coluna N de um texto
dados que esto entre <tags></tags>
campos especficos de um texto tabulado
nmero de telefone, RG, CPF, carto de crdito
dados que esto apenas no comeo ou no fim da linha
E mais uma infinidade de outros padres que no podem ser especificados
com caracteres literais.
24
Expresses Regulares
Um exemplo prtico: voc tem uma lista diria de acesso de usurios que
entraram em seu sistema, onde consta, em cada linha, o horrio do acesso e
o login do usurio, algo como:
05:15
ernesto
10:32
patricia
08:39
14:59
16:27
22:23
ricardo
gabriel
carla
marcelo
Como fazer para buscar automaticamente apenas os usurios que acessaram o sistema no perodo da tarde (meio-dia s seis)? Voc tem vrias opes,
desde procurar uma a uma manualmente at fazer um programa que compare
os primeiros caracteres de cada linha, mas, falando de algo prtico e rpido,
que no exija conhecimentos de programao, a ER simplesmente ^1[2-8].
^
1
Captulo 2
. $ *
{}
[]
Os metacaracteres
Ento, para j matar sua curiosidade, aqui esto os to falados metacaracterespadro que sero nossos personagens das prximas pginas:
. ? * + ^ $ | [ ] { } ( ) \
25
26
Expresses Regulares
Metacaractere
.
Nome
Ponto
[]
?
Lista negada
Opcional
Asterisco
{}
Cifro
\b
Borda
Escape
Ou
()
Mais
Chaves
Nome
Circunflexo
Lista
[^]
Metacaractere
Grupo
\1
Retrovisor
Agora que sabemos como chamar nossos amigos novos, veremos uma
prvia, um apanhado geral de todos os metacaracteres e suas funes. Eles
esto divididos em quatro grupos distintos, de acordo com caractersticas
comuns entre eles.
Representantes
Metacaractere
Nome
Funo
Ponto
Um caractere qualquer
[...]
Lista
Lista negada
[^...]
Quantificadores
Metacaractere
?
*
+
{n,m}
Nome
Funo
Opcional
Zero ou um
Asterisco
Zero, um ou mais
Mais
Um ou mais
Chaves
De n at m
Captulo 2 Os metacaracteres
27
ncoras
Metacaractere
^
$
\b
Nome
Funo
Circunflexo
Incio da linha
Cifro
Fim da linha
Borda
Outros
Metacaractere
\c
|
(...)
\1...\9
Nome
Funo
Escape
Ou
Ou um ou outro
Grupo
Delimita um grupo
Retrovisor
Ah, antes que eu me esquea: para testar os exemplos que veremos a seguir,
acesse o site do livro: www.piazinho.com.br. H uma ferramenta especial para
voc testar todos os exemplos, alm de poder fazer suas prprias expresses.
Experimente!
28
Expresses Regulares
Ponto: o necessitado .
O ponto nosso curinga solitrio, que est sempre procura de um casamento,
no importa com quem seja. Pode ser um nmero, uma letra, um Tab, um @,
o que vier ele traa, pois o ponto casa qualquer coisa.
Suponhamos uma ER que contenha os caracteres fala e o metacaractere ponto, assim: "fala.". No texto a seguir, essa ER casaria tudo o que est sublinhado:
Olha, com vocs me pressionando, a fala no vai sair natural. Eu
no consigo me concentrar na minha fala. Alis, isso um falatrio,
pois nunca vi um comercial com tantas falas assim. Vou me queixar
com o problemasnafala@medicos.com.br.
Nesse pequeno trecho de texto, nossa ER casou cinco vezes, tendo o ponto
casado com os seguintes caracteres: .ts@.
.eclado
e.tendido
Casa com
no, nao, ...
teclado, Teclado, ...
estendido, extendido, eztendido, ...
Captulo 2 Os metacaracteres
29
Ou, para tarefas mais especficas, procurar horrio com qualquer separador
ou com marcaes (tags) HTML:
Expresso
12.45
<.>
Casa com
12:45, 12 45, 12.45, ...
<B>, <i>, <p>, ...
Resumo
O ponto casa com qualquer coisa.
O ponto casa com o ponto.
O ponto um curinga para casar um caractere.
30
Expresses Regulares
[Tt]eclado
e[sx]tendido
12[:. ]45
<[BIP]>
Casa com
no, nao
Teclado, teclado
estendido, extendido
12:45, 12.45, 12 45
<B>, <I>, <P>
Casa com
<B>, <I>, <P>, <b>, <i>, <p>
Captulo 2 Os metacaracteres
31
Intervalos em listas
Por enquanto, vimos que a lista abriga todos os caracteres permitidos em
uma posio. Como seria uma lista que dissesse que em uma determinada
posio poderia haver apenas nmeros?
Sim! Ento, para casar uma hora, qualquer que ela seja, fica como? Lembre
que o formato hh:mm.
32
Expresses Regulares
mas veja que no especfico o bastante, pois permite uma hora como
99:99, que no existe. Como poderamos fazer uma ER que casasse no mximo 23 horas e 59 minutos?
[0-9]:[0-5][0-9]
Quase, s que t
pegando 29 horas...
Calm
a
12]
.. [0
De : at @?