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,627 views
1,542 views

Published on

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

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

  • Be the first to like this

No Downloads
Views
Total views
1,627
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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}

×