Regex - Demo

  • View
    8

  • Download
    4

Embed Size (px)

Transcript

4 Edio Revisada e Ampliada

Aurelio Marinho Jargas

Novatec

Copyright 2006, 2008, 2009, 2012 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora. Editor: Rubens Prates Reviso de textos: Marta Almeida de S Capa, projeto grfico e editorao eletrnica: Karine Hermes Adaptao do projeto grfico: Carolina Kuwabata Ilustrao da capa: Vinicius Vogel ISBN: 978-85-7522-337-6 Histrico de impresses: Outubro/2012 Junho/2011 Setembro/2009 Julho/2008 Novembro/2006 Quarta edio (ISBN: 978-85-7522-337-6) Primeira reimpresso Terceira edio (ISBN: 978-85-7522-212-6) Segunda edio (ISBN: 978-85-7522-173-0) Primeira edio (ISBN: 85-7522-100-0)

Novatec Editora Ltda. Rua Lus Antnio dos Santos 110 02460-000 So Paulo, SP Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

Dados

Internacionais de Catalogao na Publicao (Cmara Brasileira do Livro, SP, Brasil)Jargas, Aurlio Marinho Expresses regulares : uma abordagem divertida / Aurlio Marinho Jargas. -- 4. ed. rev. e ampl. -So Paulo : Novatec Editora, 2012. ISBN 978-85-7522-337-6 1. Expresses regulares I. Ttulo.

(CIP)

12-12812

CDD-005.115 ndices para catlogo sistemtico: 1. Expresses regulares : Cincia da computao 005.115

VC20121022

Captulo 1Introduo

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.

ObjetivoNeste 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

Este livro a primeira publicao em portugus totalmente dedicada ao assunto, e espero que esse pioneirismo traga muitos frutos, inclusive outras publicaes sobre o tema, para difundir e desmistificar o uso das expresses regulares.

Sobre o livroA 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_]+:(.*)$

vai fazer parte de sua realidade, sem lhe causar pnico. A segunda parte a feijoada , para aqueles que querem uma experincia mais intensa. Mergulharemos de cabea e entenderemos de vez essa maquininha esquisita. So as explicaes dos conceitos envolvidos, bem como tticas e dicas para voc realmente entender e otimizar seu uso das expresses regulares. Ao final da leitura, voc entender por que^[^:]+:([A-Za-z]+):

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!

Apresentando as Expresses RegularesEnto, para podermos comear nossa viagem, nada como uma apresentao de nosso assunto, pois, afinal de contas, que raios so estas expresses? Bem resumido, uma expresso regular um mtodo formal de se especificar um padro de texto. Mais detalhadamente, uma composio de smbolos, caracteres com funes especiais, que, agrupados entre si e com caracteres literais, formam uma sequncia, uma expresso. Essa expresso interpretada como uma regra que indicar sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condies. Ou como variaes aceitas tambm pode-se afirmar que : uma maneira de procurar um texto que voc no lembra exatamente como , mas tem ideia das variaes possveis; uma maneira de procurar um trecho em posies especficas como no comeo ou no fim de uma linha, ou palavra; uma maneira de um programador especificar padres complexos que podem ser procurados e casados em uma cadeia de caracteres; uma construo que utiliza pequenas ferramentas, feita para obter determinada sequncia de caracteres de um texto. Ou ainda, didaticamente falando, : Como o brinquedo LEGO, vrias pecinhas diferentes, cada uma com sua caracterstica, que juntas compem estruturas completas e podem ser arranjadas com infinitas combinaes diferentes.

[

20

]

Expresses Regulares

Como um jogo de truco, com as cartas normais e as quentes: gato, copas, espadilha e mole, que so especiais e tm uma ordem de grandeza. Como um quebra-cabea, sempre tem soluo, s vezes bvia, s vezes difcil, mas, decifrando as partes, junta-se tudo e chega-se ao todo. Como um jogo, no comeo difcil, mas aps conhecer todas as regras, basta jogar e curtir. Como uma receita culinria, com seus ingredientes e uma ordem correta para adicion-los mistura. Como consertar carros. Voc tem vrias peas e vrias ferramentas. Dependendo do tipo de pea, h uma ferramenta certa para voc lidar com ela. E dependendo da sua localizao, voc tem de incrementar a ferramenta com mais barras e cotovelos para alcan-la. Como o alfabeto. Voc aprende primeiro as letras individualmente. Depois as slabas, as palavras, as frases e finalmente os textos. Mas no fundo so apenas letras. Acima de tudo, assim como um sorvete no domingo ensolarado, uma expresso regular : Divertida!

Divertida? T louco? Todos aqueles smbolos estranhos...

Calma... normal estranharmos ou at repudiarmos aquilo que ainda no conhecemos ou no dominamos bem. Como diria o vov Simpson no meio da multido: Vamos destruir aquilo que no entendemos! .

Ao final da leitura, ficar claro que as expresses so apenas pequenos pedacinhos simples que agrupados formam algo maior. O importante voc compreender bem cada um individualmente, e depois apenas l-los em sequncia. Lembre-se do alfabeto: so apenas letras...

Captulo 1 Introduo

[Vem c, mas de onde surgiram essas tais expresses regulares, tem algo a ver com expresses matemticas?

21

]

Histria

Sim! Vou te contar uma histria. A fecundao dessas expresses aconteceu no ano de 1943, quando os pais , dois neurologistas, publicaram um estudo que teorizava o funcionamento dos nossos neurnios. Sentiu o drama? Nosso assunto nobre desde a sua origem. Anos depois, o parteiro , um matemtico, descreveu algebricamente os modelos desse estudo utilizando smbolos para representar seus recm-criados grupos regulares (do ingls regular sets). Com a criao dessa notao simblica, nasceram as expresses regulares, que durante toda a sua infncia e juventude (cerca de vinte anos) foram muito estudadas pelos matemticos da poca. Mas o encontro com o computador s aconteceu mesmo em 1968, em um algoritmo de busca utilizado no editor de textos qed, que depois virou o ed, editor padro dos primeiros sistemas Unix. Este ed tinha o comando de contexto g, que aceitava expresses regulares e um comando p. Sua sintaxe ficava g/RE/p (Global Regular Expression Print), que deu origem ao aplicativo grep, que por sua vez originou o egrep. Outros filhos como o sed e o awk tambm apareceram, cada um implementando as expresses do seu prprio jeito; e finalmente em 1986 foi criado o divisor de guas, um pacote pioneiro em C chamado regex que tratava das expresses regulares e qualquer um poderia inclu-lo em seu prprio programa, de graa. Opa! Falaram as palavras mgicas: de graa. A no teve mais volta, as expresses caram no gosto popular e cada vez mais e mais programas e linguagens as utilizam.

[

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.

TerminologiaE 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