Your SlideShare is downloading. ×
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
Espressioni regolari
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

Espressioni regolari

704

Published on

Una introduzione alle Espressioni regolari, com molti esempi.

Una introduzione alle Espressioni regolari, com molti esempi.

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

  • Be the first to like this

No Downloads
Views
Total Views
704
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
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. Espressioni Regolari prof. Marcello Missiroli (Itis Corni. Modena)
  • 2. sa sono le espressioni regol
  • 3. sa sono le espressioni regol RegExp per gli amici
  • 4. descrivono strutture allinter
  • 5. per cercare e modificare le
  • 6. eate negli anni 50ormalizzate da Stephen Cole Kleene esistono vari dialetti
  • 7. Perché usarle?
  • 8. Perché usarle?nto potente nelle mani di ogni programmatore (specie in
  • 9. Perché usarle?nto potente nelle mani di ogni programmatore (specie in
  • 10. Perché usarle?nto potente nelle mani di ogni programmatore (specie ine sostituzione semplice e banale....
  • 11. Perché usarle? ..ma bisogna "vedere" la struttura!
  • 12. Ma soprattutto vi trasforma da così..
  • 13. a così!
  • 14. Learning by example
  • 15. Caratteri/salve/ si: "salve" "salve a tutti" "E la salvezza" no: "sale" "Salve""salv<b>e</b>"
  • 16. Sequenza di "escape"//(salve)// si: "/(salve)/" no: "salve" "(salve)"
  • 17. Alternative/en|it|fr|de/ si: "en" "it" "fritte" no: "darf"
  • 18. Raggruppamenti/(it|fr)_(IT|CH)/ si: "it_IT" "it_CH" "fr_IT"Due gruppi indipendenti! no: "it_it"
  • 19. Ancoraggio/^(it|fr|en|de)$/ si: "it" "en" "fr" Inizio e fine riga no: "italia"
  • 20. Scelta di caratteri/salv[eoa]/ si: "salve" "salva" "salvo" no: "salv" "salvoa""salvè"
  • 21. Scelta di caratteri/^Cl. [1-5]BInfo/ si: "Cl. 4BInfo" "Cl. 5BInformatica" no: "BInfo" "Cl. 6Binfo"
  • 22. Scelta di caratteri: complemento/^Cl. [^1-5]BInfo/ si: "Cl. 0BInfo" "Cl. 6BInformatica" no: "Cl. 3Binfo"
  • 23. Scelte condizionate /Iron(?=man)/ si: "Ironman" no: "Iron"che in versione negativa, usando (?!man)
  • 24. Scelte condizionate /(?<=Iron)man/ si: "Ironman" no: "man"che in versione negativa, usando (?<!man) "Iron"
  • 25. Scelta di caratteri: "word class" /^w$/ si: "a" "_" no:quello che può costituire un nome di variabile "("
  • 26. Scelta di caratteri:altre classi/s/ Spazio bianco (anche tab) ""/W/ Non-parola ")"/D/ Non-numero "a"/S/ Non-spazio bianco "="
  • 27. Scelta di caratteri: qualsiasi/^......$/ si: "abacab" "123/56" no: "("
  • 28. Qualsiasi quantità (anche 0)/^d*$/ si: "123456" "" no: "1a"
  • 29. Qualsiasi quantità (minimo 1)/^d+$/ si: "123456" no: "1a" ""
  • 30. Uno o nessuno/^pera?$/ si: "pera" "pere" "per" no: "peraa"
  • 31. Specificare la quantità/^059-d{7}$/ (esattamente sette) "059-5556734"/^059-d{6,7}$/ (da sei a sette) "059-555673"
  • 32. Attenti...operatori avidi!/_(+*)_/ "_bla_ _bla_"
  • 33. Attenti...operatori avidi! /_(+*)_/ "_bla_ _bla_" ^^^^^ova la stringa più lunga possibile! ^^^^^^^ ^^^^^^^^^^^
  • 34. Attenti...operatori avidi!/_(.+?)_/ "_bla_ _bla_" ^^^^^Ora si ferma qui!Usare +? per renderlo meno avido!
  • 35. Gruppi catturati
  • 36. Di che si tratta?uò essere riutilizzato subito o in seguito per manipolarei dipende dal linguaggio usato.
  • 37. Esempio<a href="http://test.com">test</a>Applichiamo a questo testo lespressione<a href="/(.*?)">(.*?)</a>/l sistema scompone la stringa in cinque gruppi, in questo modo:<a href="http://test.com">test</a>l sistema scompone la stringa in cinque gruppi, numerandoli da 1 a 5
  • 38. Esempiousare questi gruppi come blocchi del Lego e costruire il risultato che cn PHP, <a href="/)(.*?)(">)(.*?)(</a>),$1.$2.$3.$2.$5 , "<a href="http://test.cotest.com">http://test.com</a>
  • 39. Nomi dei gruppi catturatiIl nome dato ad ogni gruppo dipende dal linguaggio utilizzato Gruppo 1 PHP .NET Perl Ruby sed Javascript 1 X X X X $1 X X X X ${1} X X X
  • 40. Nome del gruppo trovatoEsiste anche il "gruppo 0", ovvero lintero testo trovato Gruppo 1 PHP .NET Perl Ruby sed Javascript 0 X X $0 X X. ${0} X X X & X $& X X X
  • 41. Di che si tratta?uò essere riutilizzato subito o in seguito per manipolarei dipende dal linguaggio usato.
  • 42. Regex in azionee/o programmi hanno supporto per Sono facili da usare!
  • 43. Putroppo...no supporto diretto per le RegEx op
  • 44. Esempio: ruby#!/usr/bin/rubyphone = "2004-959-559# Togli tutto tranne i numeriphone = phone.gsub!(/D/, "")#ora la variabile numero è uguale a2004959559
  • 45. Esempio: grepricerca di righe in "files" che contengonogrep strano files ...la parola stranogrep ^strano files ...solo a inizio rigagrep strano$ files ...solo a fine rigagrep ^strano$ files ...solo la parola stranogrep [Ss]trano files ... strano o Stranogrep ^$ files ... righe vuotegrep [0-9][0-9] file ... coppie di cifre
  • 46. Esempio: Javascriptvar espressione = /^[a-z0-9]/;var stringa = "Unastringa";if (!espressione.test(stringa)){ document.write("La stringa non è valida!"); }----------------------------------------------------var string2="(304)434-5454"parsestring2=string2.replace(/[()-]/g, "")//restituisce "3044345454", toglie "(", ")", e "-")
  • 47. Esempio: grepricerca di righe che contengonogrep strano file ...la parola stranogrep ^strano files ...solo a inizio rigagrep strano$ files ...solo a fine rigagrep ^strano$ files ...solo la parola stranogrep [Ss]trano files ... strano o Strano grepgrep ^$ files ... righe vuotegrep [0-9][0-9] file ... coppie di cifre
  • 48. Esempio: Javal titolo di una pagina HTML"(?i)(<title.*?>)(.+?)(</title>)";dated = EXAMPLE_TEST.replaceAll(pattern, "$2");sce true se la stringa è esattamente "True" o "true, "Yesolean isTrueOrYes(String s){s.matches("[tT]rue|[yY]es"); }
  • 49. Esempio: Javagex.Matcher; import java.util.regex.Pattern;xTestPatternMatcher {inal String EXAMPLE_TEST = "This is my small example string which Im going to use for pvoid main(String[] args) {pattern = Pattern.compile("w+",CASE_INSENSITIVE); matcher = pattern.matcher(EXAMPLE_TEST); lla tutte le occorenzeatcher.find()) { em.out.print("Start index: " + matcher.start()); em.out.print(" End index: " + matcher.end() + " "); em.out.println(matcher.group());} sci tutt gli spazi con tabi eplace = Pattern.compile("s+"); matcher2 = replace.matcher(EXAMPLE_TEST);out.println(matcher2.replaceAll("t")); } }
  • 50. Esempio: C++ard per le regex. Occorre studiarsi la versionece(str, rx, replacement);
  • 51. 6 “ricette”Non perfette al 100%, utili come base di lavoro
  • 52. 1. Email valida?_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+
  • 53. 2. Username valido?/^[a-zd_]{5,20}$/
  • 54. 3. Indirizzo IP?0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4
  • 55. 4. Carta di credito?3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-
  • 56. 5. URL?s|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):
  • 57. 6. Codice Fiscale?abcdehlmprstABCDEHLMPRST]{1}[0-9]{2}([a-zA-Z]{1}[
  • 58. Imparate le BASI!Ci sono cose nella vita che bisogna per forza imparare..
  • 59. Imparate le BASI!Ci sono cose nella vita che bisogna per forza imparare..Per tutto il resto cè
  • 60. SitografiaRaj Kissu Rajandran: "regular-expressions-101"Lars Vogel: "JavaRegularExpressions"Brigitte Nellinek: "regular-expressions-eine-einfhrung"Compago.it: "esempi-pratici-di-espressioni-regolari"
  • 61. Licenza

×