Apresentação no Bit2Bit Study Group sobre Expressões regulares. Baseado no livro "Expressões regulares - Uma abordagem divertida"
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
Entendendo e aplicando expressões regulares em C# - Parte 1
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
IntroduçãoQuantos de nós já necessitaram fazer manipulação ou pesquisas em textos?Quantos perderam horas com ifs e fors tentando procurar palavras baseadas emum determinado padrão?
As expressões regulares, quando bem aplicadas e refinadas, permitem manipulartextos de forma rápida e precisa.
Infelizmente não existe um vasto material sobre este assunto em português. Amaioria não é muito didática na hora de explicar os conceitos e aplicar na prática.
Isto faz com que poucos desenvolvedores dominem este poderoso assunto quebem aplicado economiza horas de desenvolvimento.
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
IntroduçãoUm dos melhores materiais, didáticos, em português (se não o melhor) sobreeste assunto é o livro em que a maior parte teórica, sobre expressões regulares,desta apresentação está embasada: Expressões regulares – Uma abordagemdivertida de Aurélio Marinho Jargas.
A maioria do material sobre expressões regulares em português encontrado nainternet é baseado no livro dele.
Esta apresentação irá introduzi-lo neste assunto, fazendo expressões como *[A-Za-z0-9_]+:(.*)..$ se tornarem compreensivas e não lhe causar pânico.
Em toda apresentação, o que estiver entre aspas duplas foi copiado na integra do livro
“CURIOSIDADE: apesar de esse assunto ser antigo, o que vamos ver aquibasicamente é o mesmo que um estudante veria há 15 anos atrás. É um conceitoconsistente, que não sofre alterações com o passar do tempo.”
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
Definição“Uma expressão regular é um método formal de se especificar um padrão de
texto.”
De forma simplificada, uma regular expression, termo original, é uma composição de símbolos e caracteres literais com funções definidas que quando agrupadas em sequência formam uma expressão.
Essa, por sua vez, é interpretada, por um programa, como uma regra que resultará em sucesso caso uma entrada de dados atenda suas condições.
Também podemos afirmar que é:
• “uma maneira de procurar um texto que você não lembra exatamente como é, mas tem ideia das variações possíveis;
• uma maneira de procurar um trecho em posições específicas como no começo ou no fim de uma linha, ou palavra;
• uma maneira de um programador especificar padrões complexos que podem ser procurados e casados em uma cadeia de caracteres”;
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
Aplicações“Basicamente servem para você dizer algo abrangente de forma específica.Definido seu padrão de busca, você tem uma lista (finita ou não) depossibilidades de casamento. Em um exemplo rápido, [rgp]ato pode casar rato,gato e pato. Ou seja, sua lista "abrange especificamente" essas três palavras,nada mais.”
Sempre que precisar efetuar buscas ou validações em textos, as expressõesregulares funcionam muito bem. Alguns exemplos de buscas por padrões, emtextos, são:• data• horário• número IP• endereço de e-mail• endereço de Internet• dados na coluna N de um texto• dados que estão entre <tags></tags>• campos específicos de um texto tabulado• número de telefone, RG, CPF, cartão de crédito
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
Representante Ponto: o necessitado .
“O ponto é nosso curinga solitário, que está sempre à procura de umcasamento, não importa com quem seja. Pode ser um número, uma letra,um TAB, um @, o que vier ele traça, pois o ponto casa qualquer coisa.”
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
RepresentanteLista: a exigente [...]
“Bem mais exigente que o ponto, a lista não casa com qualquer um. Ela sabeexatamente o que quer, e nada diferente daquilo, a lista casa com quem elaconhece.”
No exemplo anterior, com a palavra não, a expressão n.o, poderia aceitarvárias palavras como n o, n1o, noo, njo...
Para deixá-la mais específica poderíamos usá-la assim: n[ãa]o
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
RepresentanteLista: a exigente [...]
“Bem mais exigente que o ponto, a lista não casa com qualquer um. Ela sabeexatamente o que quer, e nada diferente daquilo, a lista casa com quem elaconhece.”
No exemplo anterior, com a palavra não, a expressão n.o, poderia aceitarvárias palavras como n o, n1o, noo, njo...
Para deixá-la mais específica poderíamos usá-la assim: n[ãa]o
O ponto não aceita qualquer coisa?Dentro da lista, todos os caracteres são normais
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
RepresentanteLista: a exigente [...]
“Bem mais exigente que o ponto, a lista não casa com qualquer um. Ela sabeexatamente o que quer, e nada diferente daquilo, a lista casa com quem elaconhece.”
No exemplo anterior, com a palavra não, a expressão n.o, poderia aceitarvárias palavras como n o, n1o, noo, njo...
Para deixá-la mais específica poderíamos usá-la assim: n[ãa]o
O ponto não aceita qualquer coisa?Dentro da lista, todos os caracteres são normais, exceto o traço.
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
Representante Lista negada : a experiente [^...]
“Nem tão exigente quanto a lista nem tão necessitada quanto o ponto, temos alista negada, que pelas suas más experiências passadas, sabe o que não servepara ela casar.”
A lista negada é igual a lista comum, a única diferença é que ela aceitará todos oscaracteres que NÃO tiverem dentro da lista. Ex: l[^aeioAEIO]a – lua, l1a, lpa...
IMPORTANTE: A lista negada não casa com espaço vazio. No exemplo acima elaNÃO aceitaria l a (l, espaço, a). É necessário ter um caractere diferente.
Deve ser colocado no final. Ex: [^:a-z123^]
Como colocar o ^ dentro da lista se eles são metacaracteres?
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
QuantificadorAsterisco: o tanto-faz *
“Se o opcional já não esquenta a cabeça, podendo ter ou não a entidade anterior, o asterisco é mais tranqüilo ainda, pois para ele pode ter, não ter, ou ter vários, infinitos. Em outras palavras, a entidade anterior pode aparecer em qualquer quantidade.”
Um curinga na mangaVimos o metacaractere . (ponto) que aceita qualquer caractere. Agora vimos o metacaractere * (asterisco) que aceita em qualquer quantidade. Olhe e pense na seguinte expressão:
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
QuantificadorChaves: o controle {m,m}“Aqui Chaves não é o au?tor mexicano preferido de 10 entre 10brasileiros. As chaves são a solução para uma quantificação maiscontrolada, onde se pode especificar exatamente quantas repetiçõesse quer da entidade anterior.”
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
ÂncoraCircunflexo: o início ^
“O nosso amigo circunflexo (êta nome comprido e chato) marca o começo deuma linha. Nada mais.”
Dentro da lista (e no início) o ^ tem o objetivo de negar seu conteúdo. Fora dalista ele serve para marcar que a palavra deve ser encontrada exatamente noinício da linha. EX: ^[a-zA-Z].
Este metacaractere só é especial se tiver no começo da expressão regular. Se euquiser procurar uma palavra que começe com ^ poderia fazer assim:
^^
Está gostando? Faltam apenas mais dois âncoras para finalizar a parte teóricadesta apresentação.
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
ÂncoraBorda: a limítrofe \b
“A outra âncora que temos é a borda, que como o próprio nome já diz, marcauma borda, mais especificamente, uma borda de palavra.”
Basicamente ela marca onde começa e onde termina uma palavra. Simplesassim! Veja:
“Palavra” aqui engloba [A-Za-z0-9_], ou seja, letras, números e sublinhados. Poristo no exemplo acima \bdia\b aceitou bom-dia!, devido a exclamação e o traçonão fazerem parte de uma palavra. Em alguns aplicativos o _ também não faz. =)
Bit 2 Bit Study Grouphttp://blog.bit2bit.com.br – [email protected] - @bit2bitgroup
ExercíciosIremos fazer a seguir 4 exercícios simples de fixação. A resposta estará nopróximo slide. Tente resolve-los antes de prosseguir.
Escreva uma expressão regular que:
1. Reconheça a palavra carro minúscula, no plural, singular e em qualquer partede um texto.
2. Reconheça a palavra casa em qualquer combinação de maiúscula, minúscula eem qualquer parte de um texto.
3. Reconheça um número de IP, que aceite 999.999.999.999Dica: O metacaracter “\” torna outro metacaractere literal.OBS: Sabemos que não existe um IP assim, foi usado aqui apenas para iniciar deforma simples o entendimento da aplicação de expressões regulares e osoperadores aprendidos nesta parte.