tjmt - expressões regulares

21

Upload: sockentel

Post on 20-Jun-2015

1.070 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: TJMT - Expressões Regulares
Page 2: TJMT - Expressões Regulares

TJMTSESSÕES TÉCNICAS

EXPRESSÕES REGULARES

Da Teoria à Práticaby William Thiago

Page 3: TJMT - Expressões Regulares

Conteúdo Programático

Ok, mas, o que são expressões regulares? “Auto” o que? Fala em português. “Metaca...” Repete por favor. Mais? Calma, vou anotar. Finalmente, dicas! Me mostra algo prático! Em C# de

preferência. Onde eu procuro mais sobre isso? Posso dar minha opinião?

Page 4: TJMT - Expressões Regulares

No alfabeto, você aprende primeiro as letras individualmente, depois as sílabas e palavras, frases e finalmente textos. No fundo são apenas letras.

Expressões Regulares

Page 5: TJMT - Expressões Regulares

História

1943 – Publicação de um estudo sobre o funcionamento dos neurônios.

195x – Descrição algébrica dos modelos desse estudo, utilizando símbolos para representar seus recém criados grupos regulares.

1968 – Algorítimo de busca no editor qed (Unix). Global Regular Expression Print.

1986 – Pacote gratuito em C: regex

Page 6: TJMT - Expressões Regulares

Representação formal de um autômato finito, com o objetivo de determinar um padrão de texto.

Leitura atômica da esquerda para a direita

Expressão Regular

^[0-9]+\. [0-9]*|\. [0-9]+$

Page 7: TJMT - Expressões Regulares

Em terra de metacaractere, quem tem um asterisco é rei.

Metacaracteres Padrões

Page 8: TJMT - Expressões Regulares

Representativos

Ponto – O promíscuo . Curinga solitário, sempre procurando

casamento. Sempre casa com qualquer coisa, promíscuo. n.o não, nao, nmo, ... 13.20 13:20, 13h20, 13.20, ...

Lista – A exigente [...] Sabe exatamente o que quer, só casa com

quem ela conhece. n[ãa]o não, não 13[:.h]20 13:20, 13.20, 13h20 [mpgr^]ato pato, gato, rato, mato, ^ato

Page 9: TJMT - Expressões Regulares

Representativos

Lista – A exigente [...] Possui intervalos

200[5-9] 2005, 2006, 2007, 2008, 2009 [a-zA-Z] alfabeto minúsculo e maiúsculo [][-a-z] ], [, -, alfabeto minúsculo

Lista Negada – A experiente [^...] Devido as suas experiências no passado, sabe o

que não serve para casar [^0-9] qualquer coisa fora os

números [^A-Z] qualquer coisa fora o

alfabeto maíusculo

Page 10: TJMT - Expressões Regulares

Quantificadores

Opcional – O Calmo ? Não esquenta a cabeça, se tem, ótimo, se não, tudo

bem ondas? onda, ondas fala[r!]? fala, falar, fala! </?[pbi]> <p>, </p>, <b>, </b>, <i>, </i>

Asterisco – O Guloso Despreocupado * Pode ter, pode não ter, pode ter vários, infinitos

3*0 0, 30, 330, 3330, 33333333330, ...

ru*a ra, rua, ruua, ruuuuuuuuuuuua, ....

[ar]*a a, aa, aaaa, raaa, raarararaa, ...

Page 11: TJMT - Expressões Regulares

Quantificadores

Mais – O Guloso Exigente + Tem que ter, um ou vários, infinitos

3*0 30, 330, 3330, 33333333330, ... ru*a rua, ruua, ruuuuuuuuuuuua, ....

Chaves – O Guloso de Regime {n,m} Sabe o cardápio mínimo e até onde pode comer

a{1,3} a, aa, aaa a{3} aaa a{0,1} igual ao Opcional a{0,} igual ao Asterisco a{1,} igual ao Mais

Page 12: TJMT - Expressões Regulares

Âncoras

Circunflexo – O Iniciante ^ Marca o começo da linha

^[0-9] linha que começa com número

Cifrão – O Fim de Papo $ Marca o fim da linha

[0-9]$ linha que termina com número

Borda – A Bordinha das Coisas \b Marca o começo das palavras (letras, números)

\bdia dia, diafragma, bom-dia dia\b dia, melodia, bom-dia \bdia\b dia, bom-dia, bom-dia!

Page 13: TJMT - Expressões Regulares

Outros Metacaracteres

Escape – A Criptonita \ Retira os poderes de quem ela acompanha Tão forte que retira os próprios poderes

1\.[048] 1.0, 1.4, 1.8 \\caminho \caminho

Ou – O Alternativo | É uma lista de palavras

dia|tarde|noite dia, tarde, noite http|ftp http, ftp

Page 14: TJMT - Expressões Regulares

Outros Metacaracteres

Grupo – O Agregador (...) Marca um conjunto para ser trabalhado

(ha!)+ ha!, ha!ha!, ha!ha!ha!ha! (www.\)?zz\.br www.zz.br, zz.br boa-(tarde|noite) boa-tarde, boa-noite

Retrovisor – O Nostáulgico \1...\9 Repete um grupo anterior

(quero)-?\1 quero, quero-quero ([a-z]+)\1 bombom, lili, bibi, dudu in(d)ol(or) é sem \1\2 indolor é sem dor \b([A-Za-z]+) \1\b corretor de duplicações

Page 15: TJMT - Expressões Regulares

O caminho das pedras só é tortuoso se você não leva um mapa um bom sapato.

Manual de Sobrevivência

Page 16: TJMT - Expressões Regulares

Dicas

Não complique Aplique a metodologia KISS.

(mini|(su|hi)per)?mercado (mini|super|hiper)?mercado

Use o Circunflexo Se possível, case no começo! Gaveta do chefe

Evite a Lista Negada Qualquer coisa fora números não significa

que você só quer letras [^aqui]

Page 17: TJMT - Expressões Regulares

Dicas

Evite o Curinga Lembre-se que ele é guloso. Ele pode comer

toda sua expressão. <b>.*</b> <b>negrito</b> e outro

<b>negrito</b> <b>.*?</b> <b>negrito</b> e outro

<b>negrito</b> Seja Ninja

De um passo de cada vez: Ex.: dd/mm/aaaa ../../.... [0-9]{2}/[0-9]{2}/[0-9]{4} [0123][0-9]/[01][0-9]/[0-9]{4} (0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[12])/[12][0-9]{3}

Page 18: TJMT - Expressões Regulares

Há 10 tipos de pessoas neste mundo: aquelas que sabem contar em binário, e aquelas que não…

Exemplos Práticos

Page 19: TJMT - Expressões Regulares

CTRL+C, CTRL+V, porque ninguém faz nada sozinho.

Bibliografia

Page 20: TJMT - Expressões Regulares

Links

http://guia-er.sourceforge.net/ http://aurelio.net/er/ http://www.addedbytes.com/cheat-sheets/ http://regexpal.com/ http://regexp.resource.googlepages.com/analyzer.html http://www.nregex.com/nregex/default.aspx http://osteele.com/tools/reanimator/ http://msdn.microsoft.com/en-us/library/hs600312.aspx http://www.regular-expressions.info/ http://regexlib.com/

Page 21: TJMT - Expressões Regulares

Aproveite, expor os pensamentos e tirar dúvidas ajuda a fixar.

Participe! Fale sua Opinião