Your SlideShare is downloading. ×
0
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Minicurso de Expressões Regulares
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Minicurso de Expressões Regulares

3,540

Published on

Minicurso de Expressões Regulares ministrado na Dextra, em abril de 2011.

Minicurso de Expressões Regulares ministrado na Dextra, em abril de 2011.

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,540
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
115
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ([01][0-9]|2[0-3]):([0-5][0-9]) Expressões Regulares André Willik Valenti Dextra Sistemas
  • 2. Minicurso? Mote: Foco no basicão Objetivos: Apresentar assunto de forma prática Despertar interesse Dar o pontapé inicial
  • 3. Expressões Regulares? Maneira elegante de manipular strings Sintaxe própria e relativamente padronizada Onipresente Linguagens de programação Editores de texto Ferramentas de desenvolvimento em geral
  • 4. Para que servem Encontrar texto Processar texto Substituir texto
  • 5. Aplicações Validação de entradas Aplicação de máscaras em campos CPF, datas, códigos etc. Filtragem de resultados em consultas (...)
  • 6. Expressões regulares por aí URLs Endereços de e-mail Datas Caminhos de arquivo Trechos de código fonte (...)
  • 7. Vc já usou e talvez nem saiba! SELECT * FROM pessoa WHERE sobrenome LIKE %Silva%; ls *.txt dir *.sys
  • 8. Como funcionam Essência Casamento de padrões Quantificadores Classes de caracteres
  • 9. Como funcionam Casamento de padrões Padrão: aro Casa com: aro (posição 0) caro (posição 1) Amparo (posição 3)
  • 10. Como funcionam Quantificadores 1 ou mais: + 0 ou mais: * 0 ou 1: ? Exemplos a ‘a’ a+ ‘a’, ‘aa’, ‘aaa’, ... a* ‘’, ‘a’, ‘aa’, ‘aaa’, ... a? ‘’, ‘a’
  • 11. Como funcionam Exemplos ab+c ‘abc’, ‘abbc’, ‘abbbc’... ab?c ‘ac’, ‘abc’ ab*c ‘ac’, ‘abc’, ‘abbc’, ‘abbbc’...
  • 12. Como funcionam Classes de caracteres Dígito: d Letra: [A-Z], [a-z], [a-zA-Z] Letra, dígito ou ‘_’: w Exemplos: ddd ‘000’, ‘012’, ‘321’, ‘999’, ‘821’, ... [a-z]w ‘aa’, ‘ba’, ‘xy’, ‘zh’, ‘a1’, ‘x9’, ‘m_’... [A-Z]dd ‘B12’, ‘P36’, ‘X89’, ...
  • 13. Exemplos mais realistas Nome (ex: Luciana) [A-Z][a-z]* Hora (ex: 12:34) dd:dd Nome de variável (ex: minha_var_2) w+
  • 14. Demonstração...
  • 15. Como funcionam Classes de caracteres Espaço em branco: s Conjunto de possibilidades: [ ] Qualquer caractere: . Exemplos: as*b ‘ab’, ‘a b’, ‘a b’, ‘a b’, ... var[XYZ] ‘varX’, ‘varY’, ‘varZ’ 1. ‘1a’, ‘12’, ‘1;’, ‘1$’, ‘1~’, ... .* qualquer coisa que caiba em uma linha!
  • 16. Como funcionam Classes de negação Tudo que não for dígito: D Tudo que não for letra, dígito ou ‘_’: W Tudo que não for espaço em branco: S Tudo que não estiver no conjunto: [^ ] Exemplos: ddD ‘12b’, ‘99/’, ‘23 ’, ... [^abc]+ ‘d’, ‘ef’, ‘xyzdef’, ‘123’, ‘[]{}()’, ...
  • 17. Como funcionam Operador “ou” | Exemplos: abc|xyz ‘abc’, ‘xyz’ a|d ‘a’, ‘1’, ‘2’, ‘3’,... a|x|2|5: o mesmo que [ax25]
  • 18. Grupos Agrupam trechos de strings Úteis para: Extrair partes interessantes da string Substituir texto
  • 19. Grupos Exemplo: HH:MM dd:dd valida a string Mas podemos fazer mais...
  • 20. Grupos Exemplo: 20:32 Não nos interessa muito a string “20:32” Interessam-nos mais as substrings “20” e “32” (dd):(dd) Agrupamos partes da expressão regular Podemos recuperar os grupos usando 1, 2 etc.
  • 21. Demonstração...
  • 22. Expressões regulares por aí... Java import java.util.regex.Pattern; String regex = "dd:dd"; Pattern.matches(regex, "12:34") true "uma str aqui".replaceAll("s", "_") "uma_string_aqui"
  • 23. Expressões regulares por aí... Python import re regex = r(dd)/(dd)/(dddd) match = re.match(regex, 13/04/2011) match.group(0) ‘13/04/2011’ match.group(1) ‘13’ match.group(2) ‘04’ match.group(3) ‘2011’
  • 24. Expressões regulares por aí... JavaScript var str = JavaScript !; var regex1 = /w/; str.replace(regex1, #) #avaScript ! var regex2 = /w/g; str.replace(regex2, #) ########## !
  • 25. Expressões regulares por aí... Ruby /abcd/ =~ abc4 0 /abcd/ =~ 0123abc789 4 /abcd/ =~ 0123456 nil match = /(dd):(dd)/.match(12:34) match[1] 12 match[2] 34
  • 26. Expressões regulares por aí... Ruby abcd1234.gsub(/d/, -) a12b.gsub(/a(dd)b/, ab1) Vejamos no irb...
  • 27. Exercícios Extrair DDD, prefixo e terminal de um telefone: “(16) 3202-3934” “16”, “3202”, “3934” Extrair somente dígitos de CPF: “123.456.789-00” “12345678900” Extrair somente as consoantes da frase: “eu sou a luz das estrelas” “slzdsstrls”
  • 28. Outros metacaracteres Início da string: ^ Fim da string: $ Exemplos: ^function Casa com ‘function’, mas não com ‘f = function() { }’ 42$ Casa com ‘var v = 42’, mas não com ‘var v = 42;’ ^algumPadraoAqui$ Casa somente quando o padrão ocupa a linha inteira
  • 29. Outros metacaracteres Fronteira de palavra: b Exemplo: b[A-Za-z]+b Casa com todas as palavras de um arquivo
  • 30. Mais quantificadores... {exato} d{7} números com exatamente 7 dígitos {minimo,maximo} [a-z]{5,8} 5 a 8 letras minúsculas {minimo,} [A-Z]{3,} 3 ou mais letras maiúsculas
  • 31. Mais aplicações... grep svn st | grep –E .*j(ava|s) Endereço IP d{1,3}.d{1,3}.d{1,3}.d{1,3}
  • 32. Mais aplicações... Horário – versão mais precisa ([01][0-9]|2[0-3]):([0-5][0-9]) Nome de variável – versão mais precisa [A-Za-z_$][w$]*
  • 33. Mais aplicações... Endereço IP – versão radical (25[0-5]|2[0-4][0-9]|[01]?[0- 9][0-9]?).(25[0-5]|2[0-4][0- 9]|[01]?[0-9][0-9]?).(25[0- 5]|2[0-4][0-9]|[01]?[0-9][0- 9]?).(25[0-5]|2[0-4][0- 9]|[01]?[0-9][0-9]?)
  • 34. Referências Documentação Python http://docs.python.org/release/2.7/library/re.html? highlight=regex#regular-expression-syntax Documentação Java http://download.oracle.com/javase/1.4.2/docs/api/j ava/util/regex/Pattern.html
  • 35. Referências Regular-Expressions.info (possui tutorial) http://www.regular-expressions.info/ Crucial Concepts Behind Advanced Regular Expressions http://www.smashingmagazine.com/2009/05/06/in troduction-to-advanced-regular-expressions/ Visualizador de expressões regulares http://strfriend.com/
  • 36. Apêndice Ideias para futuros temas JPA – Java Persistence API Tratamento de exceções Desenvolvimento para iPhone / Android jQuery

×