Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Regular Expressions
Ziel       based on http://xkcd.com/208/ by Randall Munroe - used under CC-BY-NC
Vorlesung und Übung zu Regular Expressions-  Irgendwas mit Strings:      - grep   –  match (erkennen)         - vi, vim   ...
Anwendungsbeispiele$ grep POST log/development.log!Started POST "/modul/27-modul-netzwerke/book" for 127.0.0.1 at 2011-09-...
Anwendungsbeispiel PHP                           # PHP: Aus Wordpress Plugins!Code code code code code                    ...
Anwendungsbeispiel Javascript                           # Javascript!Code code code code code                           if...
Anwendungsbeispiel Ruby                           # Ruby!Code code code code code                           if env[HTTP_US...
Anwendungsbeispiel C#                           # c# Aus http://support.microsoft.com/kb/308252!Code code code code code  ...
Zeichen/hallo/!   ja:!           "hallo"!           "aber hallo!"!           "die hallobergrenze"!           nein:!       ...
Oder/en|sk|us|uk/!   ja:!                 "en"!                 "sk"!                 "uk"!                 "ukulele"!    ...
Gruppieren/(de|fr)_(DE|CH)/! ja:!                   "de_DE"!                   "fr_DE"!                   "de_CH"!        ...
Verankern /^(en|sk|us|uk)$/! ja:!                    "en"!                    "sk"!                    "uk"!              ...
Zeichen zur Auswahl: Klasse/^hall[oia]$/!         ja:!                       "halli"!                       "hallo"!      ...
Zeichen zur Auswahl: Klasse/^u[1-4]$/!            ja:!                       "u1"!                       "u2"!            ...
Zeichen zur Auswahl: Komplement der Klasse/^u[^1-4]$/!          ja:!                      "u5"!                      "ux"!...
Klasse der Ziffern/^ud$/!             ja:!                     "u5"!                     "u9"!                     "u0"!  ...
Klasse der Wort-Zeichen/^w$/!                   die Zeichen, die                            man in                        ...
Irgendein Zeichen/^....$/!           ja:!                    "1234"!                    "&$§_"!                    nein:! ...
Beliebig viele davon: der Stern-Operator/^d*$/!                ja:!                        ""!                        "1"!...
Mindestens eins davon: der + Operator/^d+$/!               ja:!                       "1"!                       "123"!   ...
eins oder keins: der ? Operator-  /^imis?$/               -  ja:                           -  "imi"                       ...
Anzahl festlegen/^d{4}$/!         genau 4 Ziffern!/^d{3,6}$/!       3 bis 6 Ziffern!
Eins oder keins/^imid?$/!       ja:!                  "imi"!                  "imi0"!                  "imi9"!            ...
mindestens eine ziffer/^imid+$/!              ja:!                         "imi0"!                         "imi9"!        ...
Operatoren sind "greedy"/(d*)/!           "01234567"!                    ^^^^^^^^!/_(.*)_/!          "_bla_ _bla_"!       ...
Warnhinweis-  Es gibt Ding, die man nicht mehr mit Regular   Expressions in den Griff bekommt-  Siehe Theoretische Informa...
/(bb|[^b]{2})/bb[^b][^b]{2}bb|[^b]{2}
Upcoming SlideShare
Loading in …5
×

Regular Expressions - eine Einführung

1,872 views

Published on

Gastvortrag an der HTW Berlin am 8.Dezember 2011. Vorstellung von Regular Expressions.

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

Regular Expressions - eine Einführung

  1. 1. Regular Expressions
  2. 2. Ziel based on http://xkcd.com/208/ by Randall Munroe - used under CC-BY-NC
  3. 3. Vorlesung und Übung zu Regular Expressions-  Irgendwas mit Strings: - grep –  match (erkennen) - vi, vim –  replace (ersetzen) - sed, awk-  Theoretische - perl Informatik: - c, c++ –  Regulärer Ausdruck - javascript –  equivalent zu - java, c# –  Endlicher Automat (Finite State Machine)
  4. 4. Anwendungsbeispiele$ grep POST log/development.log!Started POST "/modul/27-modul-netzwerke/book" for 127.0.0.1 at 2011-09-19 16:30:33 +0200Started POST "/event/ditact-2011" for 127.0.0.1 at 2011-09-19 16:32:33 +0200Started POST "/enroll/1659" for 127.0.0.1 at 2011-09-19 16:33:23 +0200Started POST "/admin/event/ditact-2011/updatebookings" for 127.0.0.1 at 2011-09-19 16:36:18 +0200Started POST "/admin/event/ditact-2011/updatebookings" for 127.0.0.1 at 2011-09-19 16:36:22 +0200Started POST "/course_evaluation/76" for 127.0.0.1 at 2011-09-20 17:07:36 +0200Started POST "/user/sign_in" for 127.0.0.1 at 2011-10-17 11:18:40 +0200
  5. 5. Anwendungsbeispiel PHP # PHP: Aus Wordpress Plugins!Code code code code code if (preg_match(/^(http)(s?)(:)///,$linky)){! if (preg_match ( "/en|sk|zh|us|uk/", $locale_code )){! # allgemein:! preg_match( "/regex/", "string in dem ich suche") !
  6. 6. Anwendungsbeispiel Javascript # Javascript!Code code code code code if (navigator.appVersion.match(/MSIE [0-6]./)) { ! if (formula.match(/^d+$/)) { // just a number! # Allgemein: regex hat eigene Syntax, ist ein! # eigener Datentyp! string.match(/regex/)! # für Fortgeschrittene: zur Laufzeit aus String bauen! r = new RegEx("/regex/")! r.execute(string)!
  7. 7. Anwendungsbeispiel Ruby # Ruby!Code code code code code if env[HTTP_USER_AGENT] =~ /chromeframe/! if line =~ /^committer: (.+)$/! next unless f =~ /^https?:///! # Allgemein: RegEx hat eigene Syntax! string =~ /regex/!
  8. 8. Anwendungsbeispiel C# # c# Aus http://support.microsoft.com/kb/308252!Code code code code code using System.Text.RegularExpressions;! Regex emailregex = new Regex("@");! String s = "johndoe@tempuri.org";! Match m = emailregex.Match(s);! if ( m.Success ) { ! Console.WriteLine("ja"); ! }!
  9. 9. Zeichen/hallo/! ja:! "hallo"! "aber hallo!"! "die hallobergrenze"! nein:! "halo"! "Hallo"! "<span>h</span>allo"!
  10. 10. Oder/en|sk|us|uk/! ja:! "en"! "sk"! "uk"! "ukulele"! nein:! "esuu"!
  11. 11. Gruppieren/(de|fr)_(DE|CH)/! ja:! "de_DE"! "fr_DE"! "de_CH"! "fr_CH"! nein:! "de_AT"! "it_CH"!
  12. 12. Verankern /^(en|sk|us|uk)$/! ja:! "en"! "sk"! "uk"! nein:! "ukulele"! "esuuk"!
  13. 13. Zeichen zur Auswahl: Klasse/^hall[oia]$/! ja:! "halli"! "hallo"! "halla"! nein:! "hall"! "halloi"! "hallö"!
  14. 14. Zeichen zur Auswahl: Klasse/^u[1-4]$/! ja:! "u1"! "u2"! "u3"! "u4"! nein:! "u5"! "ux"!
  15. 15. Zeichen zur Auswahl: Komplement der Klasse/^u[^1-4]$/! ja:! "u5"! "ux"! "u/"! nein:! "u1"! "u2"! "u3"! "u4"!
  16. 16. Klasse der Ziffern/^ud$/! ja:! "u5"! "u9"! "u0"! nein:! "ux"! "uz"! "udrei"!
  17. 17. Klasse der Wort-Zeichen/^w$/! die Zeichen, die man in Variablennamen verwenden darf:! a-z, A-Z, 0-9, _!
  18. 18. Irgendein Zeichen/^....$/! ja:! "1234"! "&$§_"! nein:! "1"! "12345"!
  19. 19. Beliebig viele davon: der Stern-Operator/^d*$/! ja:! ""! "1"! "123"! "1111"! nein:! "1a"!
  20. 20. Mindestens eins davon: der + Operator/^d+$/! ja:! "1"! "123"! "1111"! nein:! ""! "1a"!
  21. 21. eins oder keins: der ? Operator-  /^imis?$/ -  ja: -  "imi" -  "imis" -  nein: -  "imissss"
  22. 22. Anzahl festlegen/^d{4}$/! genau 4 Ziffern!/^d{3,6}$/! 3 bis 6 Ziffern!
  23. 23. Eins oder keins/^imid?$/! ja:! "imi"! "imi0"! "imi9"! nein:! "imi2011"!
  24. 24. mindestens eine ziffer/^imid+$/! ja:! "imi0"! "imi9"! "imi2011"! nein:! "imi"!
  25. 25. Operatoren sind "greedy"/(d*)/! "01234567"! ^^^^^^^^!/_(.*)_/! "_bla_ _bla_"! ^^^^^! ^^^^^^^! ^^^^^^^^^^^! den längsten möglichen String!!
  26. 26. Warnhinweis-  Es gibt Ding, die man nicht mehr mit Regular Expressions in den Griff bekommt-  Siehe Theoretische Informatik: –  reguläre Ausdrück = Chomsky Hierarchie Typ 3 –  kontextfreie Grammatik = Chomsky Hierarchie Typ 2-  Alle Computersprachen, XML, HTML sind Typ 2-  Man braucht also einen richtigen Parser dafür!
  27. 27. /(bb|[^b]{2})/bb[^b][^b]{2}bb|[^b]{2}

×