/RegExp/ Reguläre Ausdrücke
AllgemeinesZiele:   Filtern und Ersetzen von Zeichenketten   Schablone für ZeichenkettenBeschreibung von (Unter-)Mengen vo...
AnwendungsbereicheParsen von Sprachen (Erkennen von Merkmalen)   Syntax-Highlighting   lexikalische Analyse (AST)Validieru...
InhalteTheoretische Grundlagen(Perl-)Syntax von Regulären Ausdrücken   Gruppen, Klassen, QuantorenQuizBeispielAufgabe
Theoretische GrundlagenTyp-3 der Chomsky-Hierarchie (Reguläre Grammatik)Jeder reguläre Ausdruck hat einen korrespondierend...
(Perl-)SyntaxGesuchte Zeichen werden geschrieben: /abc/   Einige Zeichen müssen „escaped“ werden: /[/Klassen und Gruppen s...
KlassenEine Klasse finden eines der Zeichen, dass in ihr steht   [ABCD] findet A, B, C oder D   Durch ein „-“ lassen sich Rä...
Vordefinierte Zeichenklasssen    d              digit (Zahl) [0-9]    D                no digit [^d]    w        word chara...
Quantoren{num} beschreibt die erlaubte Anzahl des vorhergehendenAusdrucks   {min, max} beschreibt einen Bereich      /A{1,...
Vordefinierte Quantoren *     Findet ein Zeichen beliebig oft {0,} ?    Findet ein optionales Zeichen {0,1}      Der Ausdru...
Quantoren - GierQuantoren sind standardmäßig „gierig“ („greedy“)   größtmögliches ErgebnisDer „non-greedy“-Operator („?“) ...
GruppenSyntax: /(Gruppe)/Gruppen können durch Quantoren modifiziert werden   /(asdf)+/ findet beliebig oft „asdf“Einige Impl...
GruppenDurch ?: zu Beginn einer Gruppe wird diese keine Match-Gruppe
Look-AroundsVerletzen Typ 3 der Chomsky-Hierarchie & kosten Zeit +Speicher! (?=Ausdruck)                     positive look...
SonstigesBeim Ersetzen von Texten können Teilmatches via $index($1, $2 etc.) ersetzt werden^ und $ stehen für Anfang und E...
FlaggenErlauben das Modifizieren des Suchverhaltens  g                     global - findet mehrmals  i           ignore case...
QuizGegeben:   Regulärer Ausdruck: /31/   Text: „213 317 2316 31“Wie viele Übereinstimmungen gibt es?
„ABCDEF“Wird gefunden von:   /[a-z]{3}A/   /w+/   /([A-Z][a-z])+/
„baBABAba“Wird gefunden von:   /a*b/   /ba(BA)+ba/   /a*b*/
BeispielZiel: Rechnungen lösen durch ErsetzenInput: Ein String mit der RechnungZu unterstützende Operatoren: +,-,/,* (PvS-...
1. ValidierungBeispiel-Input: -12.5+42/2+-12*23Gruppe für Zeichen: /(-?[d.]+)/Klasse für Operatoren: /[-+*/]/Daraus result...
2. Punkt vor…Beispiel-Input: -12.5+42/2+-12*23„*“ und „/“ sollen durch Ergebnisse ersetzt werdenRegex für Zahlen: /-?[d.]+...
3. …StrichBeispiel-Input: "-12.5+21+-276"„+“ und „-“ sollen durch Ergebnisse ersetzt werdenRegex für Zahlen: /-?[d.]+/Rege...
And the result is…https://gist.github.com/b1f4c22259b7f9bd007b#file_string.js42/2+-12*-2.25+6.5-12.5
ProblemeEin „-“ kann bei der ersten Zahl nicht verarbeitet werdenJavaScript unterstützt keine Look-Behinds ( :( )
Zweite MöglichkeitZiel des RegExp: Erkennen der Struktur (-> Aufteilen)Hilfe: Der „|“-Operator (ODER)   /(-?[d.]+)|[-+*/]/...
AufgabeErinnerung: Zu jedem RegExp existiert ein endlicher AutomatAufgabe: Erstellt einen Automaten für folgenden RegExp: ...
Thank you for your /[atenio]{9}/!
Nächste SlideShare
Wird geladen in …5
×

Reguläre Ausdrücke

407 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
407
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
6
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Reguläre Ausdrücke

    1. 1. /RegExp/ Reguläre Ausdrücke
    2. 2. AllgemeinesZiele: Filtern und Ersetzen von Zeichenketten Schablone für ZeichenkettenBeschreibung von (Unter-)Mengen von Zeichenketten mittelssyntaktischer Regeln
    3. 3. AnwendungsbereicheParsen von Sprachen (Erkennen von Merkmalen) Syntax-Highlighting lexikalische Analyse (AST)Validierung von Formularen (Telefonnummern etc.)Textersetzung (SubEthaEdit)
    4. 4. InhalteTheoretische Grundlagen(Perl-)Syntax von Regulären Ausdrücken Gruppen, Klassen, QuantorenQuizBeispielAufgabe
    5. 5. Theoretische GrundlagenTyp-3 der Chomsky-Hierarchie (Reguläre Grammatik)Jeder reguläre Ausdruck hat einen korrespondierendenendlichen Automat Dadurch relativ einfach implementierbar
    6. 6. (Perl-)SyntaxGesuchte Zeichen werden geschrieben: /abc/ Einige Zeichen müssen „escaped“ werden: /[/Klassen und Gruppen sowie Quantoren erweitern die Syntax
    7. 7. KlassenEine Klasse finden eines der Zeichen, dass in ihr steht [ABCD] findet A, B, C oder D Durch ein „-“ lassen sich Räume beschreiben: [A-D] Durch ein „^“ zu Beginn der Klasse wird diese negiert: [^A-D] findet NICHT A, B, C oder D.
    8. 8. Vordefinierte Zeichenklasssen d digit (Zahl) [0-9] D no digit [^d] w word character [A-Za-z_0-9] W no word character [^w] s whitespace character [n tr] S no whitespace character [^s] . findet jedes Zeichen [^]
    9. 9. Quantoren{num} beschreibt die erlaubte Anzahl des vorhergehendenAusdrucks {min, max} beschreibt einen Bereich /A{1,3}/ findet 1 bis 3 mal „A“ Der Bereich kann offen sein: /A{4,}/ findet mindestens 4 mal „A“
    10. 10. Vordefinierte Quantoren * Findet ein Zeichen beliebig oft {0,} ? Findet ein optionales Zeichen {0,1} Der Ausdruck muss mindestens einmal + vorkommen {1,}
    11. 11. Quantoren - GierQuantoren sind standardmäßig „gierig“ („greedy“) größtmögliches ErgebnisDer „non-greedy“-Operator („?“) ändert dies: „ABCDEB“.match(/A.*B/) = „ABCDEB“ „ABCDEB“.match(/A.*?B/) = „AB“
    12. 12. GruppenSyntax: /(Gruppe)/Gruppen können durch Quantoren modifiziert werden /(asdf)+/ findet beliebig oft „asdf“Einige Implementierungen: Gruppen sind Teil-Matches /(a+)bc(d+)/ gibt beim Matchen von „aabcddd“ [„aabcddd“, „aa“, „ddd“] zurück
    13. 13. GruppenDurch ?: zu Beginn einer Gruppe wird diese keine Match-Gruppe
    14. 14. Look-AroundsVerletzen Typ 3 der Chomsky-Hierarchie & kosten Zeit +Speicher! (?=Ausdruck) positive look-ahead (?!Ausdruck) negative look-ahead (?<=Ausdruck) positive look-behind (?<!Ausdruck) negative look-behind
    15. 15. SonstigesBeim Ersetzen von Texten können Teilmatches via $index($1, $2 etc.) ersetzt werden^ und $ stehen für Anfang und Ende des StringsEin Oder ist durch | möglichIn einigen Implementierungen gibt es ein Entweder-Oder: (?(Bedingung)wahr|falsch)
    16. 16. FlaggenErlauben das Modifizieren des Suchverhaltens g global - findet mehrmals i ignore case - ignoriert Groß-Kleinschreibung d dot-all - Punkt („.“) als allgemeines Zeichen? m multiline - ignoriert Zeilenumbrücke („n“)
    17. 17. QuizGegeben: Regulärer Ausdruck: /31/ Text: „213 317 2316 31“Wie viele Übereinstimmungen gibt es?
    18. 18. „ABCDEF“Wird gefunden von: /[a-z]{3}A/ /w+/ /([A-Z][a-z])+/
    19. 19. „baBABAba“Wird gefunden von: /a*b/ /ba(BA)+ba/ /a*b*/
    20. 20. BeispielZiel: Rechnungen lösen durch ErsetzenInput: Ein String mit der RechnungZu unterstützende Operatoren: +,-,/,* (PvS-Rechnung!)
    21. 21. 1. ValidierungBeispiel-Input: -12.5+42/2+-12*23Gruppe für Zeichen: /(-?[d.]+)/Klasse für Operatoren: /[-+*/]/Daraus resultiert: /-?[d.]+([-+*/]-?[d.]+)*/
    22. 22. 2. Punkt vor…Beispiel-Input: -12.5+42/2+-12*23„*“ und „/“ sollen durch Ergebnisse ersetzt werdenRegex für Zahlen: /-?[d.]+/Regex für Operatoren: /[/*]/Resultat (mit Gruppen): /([d.]+)([/*])(-?[d.]+)/
    23. 23. 3. …StrichBeispiel-Input: "-12.5+21+-276"„+“ und „-“ sollen durch Ergebnisse ersetzt werdenRegex für Zahlen: /-?[d.]+/Regex für Operatoren: /[+-]/Resultat: /([d.]+)([-+])(-?[d.]+)/
    24. 24. And the result is…https://gist.github.com/b1f4c22259b7f9bd007b#file_string.js42/2+-12*-2.25+6.5-12.5
    25. 25. ProblemeEin „-“ kann bei der ersten Zahl nicht verarbeitet werdenJavaScript unterstützt keine Look-Behinds ( :( )
    26. 26. Zweite MöglichkeitZiel des RegExp: Erkennen der Struktur (-> Aufteilen)Hilfe: Der „|“-Operator (ODER) /(-?[d.]+)|[-+*/]/https://gist.github.com/b1f4c22259b7f9bd007b#file_array.js
    27. 27. AufgabeErinnerung: Zu jedem RegExp existiert ein endlicher AutomatAufgabe: Erstellt einen Automaten für folgenden RegExp: /a[bc]{2}d+f/Gefundene Buchstaben → KellerBuchstaben bis zum ersten Treffer → überspringen
    28. 28. Thank you for your /[atenio]{9}/!

    ×