Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Reguläre Ausdrücke / regular expression. P. Brezany2 =~

Ähnliche Präsentationen


Präsentation zum Thema: "Reguläre Ausdrücke / regular expression. P. Brezany2 =~"—  Präsentation transkript:

1 Reguläre Ausdrücke / regular expression

2 P. Brezany2 =~

3 P. Brezany3 Mustererkennung und Reguläre Ausdrücke in Perl

4 P. Brezany4 Reguläre Ausdrücke in der theoretischen Informatik AlternativeAneinanderreihungWiederholung 0 oder 10 und 11 n (n ≥ 0) * 0|10111* = 1 + Beispiel:(0|1)* … Beispiel:(001)

5 P. Brezany5 Reguläre Ausdrücke in der Praxis [07/Feb/2006:16:30: ] "GET /~charlie/burka-girls/burka-girls/zeichnen.gif HTTP/1.1" "http://www.horus.at/~charlie/burka-girls/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Crazy Browser 1.0.5;.NET CLR ;.NET CLR )" [07/Feb/2006:18:17: ] "GET /~charlie/fotos/down.gif HTTP/1.1" "http://www.horus.at/~charlie/fotos/index.php" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/ (KHTML, like Gecko) Safari/85.8" [07/Feb/2006:18:17: ] "GET /~charlie/fotos/private_fotos/archiv/iris_party01.jpg HTTP/1.1" "http://www.horus.at/~charlie/fotos/index.php" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/ (KHTML, like Gecko) Safari/85.8" …

6 P. Brezany6 Perl (Practical Extraction and Report Language) #!/usr/bin/perl print "Hallo Welt! \n";

7 P. Brezany7 Mustererkennung und Reguläre Ausdrücke in Perl =~ m/MUSTER/ =~ s/MUSTER/TEXT/ split(MUSTER,STRING)

8 P. Brezany8 Mustererkennung und Reguläre Ausdrücke in Perl #!/usr/bin/perl $satz = "Hallo Welt! \n"; if ($satz =~ m/Hallo/) { print "Hallo gefunden!"; }

9 P. Brezany9 Mustererkennung und Reguläre Ausdrücke in Perl #!/usr/bin/perl $satz = "Hallo Welt! \n"; $satz =~ s/Hallo/Tschau/; print $satz;

10 P. Brezany10 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie!"; $satz =~ m/a/; ⇒ true matcht erstes kleines a im String

11 P. Brezany11 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie!"; $satz =~ m/\d/; ⇒ true matcht erste Ziffer (3) im String (digit)

12 P. Brezany12 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3·Engel für Charlie!"; $satz =~ m/\D/; ⇒ true matcht erste Nicht-Ziffer (Leerzeichen nach 3 und vor E)

13 P. Brezany13 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie!"; $satz =~ m/f[äöü]r/; ⇒ true Zeichen-Klassen: z.B. [01], [äöü], [a-z], [^0-9] matcht: fär oder för oder für im String matcht nicht: füür oder fäöür oder fr oder FÜR

14 P. Brezany14 Mustererkennung und Reguläre Ausdrücke in Perl Zeichen, wie ^ $ ?. + * | [ ) \ / haben eine spezielle Bedeutung in Muster und müssen, wenn sie als normales Zeichen verwendet werden, mit einem Backslash \ vor dem Zeichen maskiert werden.

15 P. Brezany15 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "Nur 3 Engel für Charlie?"; $satz =~ m/^\?/; ⇒ false matcht: ein Fragezeichen im String, das am String-Anfang stehen muss

16 P. Brezany16 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "Nur 3 Engel für Charlie?"; $satz =~ m/\?$/; ⇒ true matcht: ein Fragezeichen im String, das am String-Ende stehen muss

17 P. Brezany17 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie???"; $satz =~ m/Engeln?/; ⇒ true Das Fragezeichen bedeutet, dass der Buchstabe vor dem Fragezeichen (n) einmal oder keinmal vorkommen darf.

18 P. Brezany18 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie???"; $satz =~ m/Ch.rlie/; ⇒ true Der Punkt (Joker) kann für genau ein beliebiges Zeichen stehen. matcht: Charlie, ChArlie, Ch1rlie, Ch%rlie, Ch rlie matcht nicht:Chrlie, Chaarlie

19 P. Brezany19 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie???"; $satz =~ m/Charlie\?+/; ⇒ true matcht: Charlie?, Charlie????,…1 - n Fragezeichen $satz =~ m/Charlie\?*/; ⇒ true matcht: Charlie auch ohne ? 0 - n Fragezeichen

20 P. Brezany20 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "3 Engel für Charlie???"; $satz =~ m/Charlie\?{2,4}$/; ⇒ true matcht: Charlie mit 2,3,oder 4 Fragezeichen $satz =~ m/ChArLiE/i; ⇒ true Das i macht das Muster case-insensitive, also unempfindlich gegenüber Groß- oder Kleinschreibung.

21 P. Brezany21 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "Engel 1, Engel 2 und Engel 3 für Charlie!"; $satz =~ s/Engel/Teufel/; $satz ist "Teufel 1, Engel 2 und Engel 3 für Charlie!"; $satz =~ s/Engel/Teufel/g; $satz ist "Teufel 1, Teufel 2 und Teufel 3 für Charlie!";

22 P. Brezany22 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "Teufel 1, Teufel 2 und Teufel 3."; $satz =~ s/(\d)/v$1.1/g; $satz = "Teufel v1.1, Teufel v2.1 und Teufel v3.1."; Mit runden Klammern kann man Teile des Strings abspeichern. Der gematchte Text des Musters im ersten Klammernpaar wird in $1, der im Zweiten in $2 gespeichert usw.

23 P. Brezany23 Mustererkennung und Reguläre Ausdrücke in Perl $satz = "Engel A"; $satz =~ s/^(.)(.*)(.)$/$3$2$1/; $satz ist "Angel E"; Der Ausdruck vertauscht den ersten und den letzten Buchstaben. ^(.)speichert den ersten Buchstabenin $1 (.*) speichert die mittleren Buchstabenin $2 (.)$speichert den letzten Buchstabenin $3

24 P. Brezany24 =~

25 P. Brezany25 Mustererkennung und Reguläre Ausdrücke in Perl Beispiel: Adresse? $ =~ Beispiel: Österreichische Postleitzahl? $plz =~ m/A\s*-\s*\d{4}$/; Beispiel: whitespace vorne und hinten entfernen… $name =~ s/^\s*(.*?)\s*$/$1/;

26 P. Brezany26 \n- Zeilenumbruch \t- Tabulator \w- Irgendein alphanumerischer (word) Buchstaben; [a-zA-Z0-9_] \W- nicht alphanumerisch (non-word); ist identisch mit [^a-zA-Z0-9_] \d- Eine Zahl. Ist identisch mit [0-9] \D- Keine Zahl. Ist identisch mit [^0-9] \s- 'whitespace character': space, tab, newline, etc \S- 'non-whitespace character' \b- Wortgrenze (nur ausserhalb [ ]) \B- Innerhalb eines Wortes.- Ein einzelner Buchstaben ohne newline ^- Zeilen- oder Stringanfang (nur außerhalb von [ ]) $- Zeilen- oder Stringende *- Null oder mehrere Male den letzten Buchstaben (gierig / greedy) *?- Null oder mehrere Male den letzten Buchstaben (minimal) +- Ein oder mehrere Male den letzten Buchstaben (gierig / greedy) +?- Ein oder mehrere Male den letzten Buchstaben (minimal) ?- Null oder ein Mal den letzten Buchstaben [abc]- a oder b oder c [^ab]- weder a noch b [a-z]+- Irgendeine Folge von Kleinbuchstaben |- entweder oder; z.B.: (eg|le)gs Entweder eggs oder legs () $1- Teil des Strings merken {2,4}- Quantifier \i- ignore case (nach Muster) \g- greedy (nach Muster)

27 P. Brezany27 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 1: $bilder = "1.jpg, 2.jpeg, 3.JPEG, 4.JPG"; Bringen Sie die Endungen der Dateien in ein einheitliches Format. (Textersetzung mit =~ s/MUSTER/TEXT/)

28 P. Brezany28 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 2: if ( $ =~ m/(:|;)-\)/ ) { print "Smile!"; } Welches Muster wird hier erkannt? Wann wird Smile! ausgegeben?

29 P. Brezany29 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 3: Erkennen Sie das grundsätzliche Format eines UNET-Logins. (also: a und Matrikelnummer z.B.: a ). Folgende Regeln gilt es einzuhalten: Ein UNET-Login beginnt mit einem a. Danach folgen 7 (beliebigen) Ziffern.

30 P. Brezany30 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 4: Prüfen Sie ob der Name einer skalaren Variable in Perl korrekt ist. (z.B.: $var, $Nachname, $x_11) Folgende Regeln gilt es einzuhalten: Skalar-Variablen beginnen mit einem $-Zeichen. Variablen-Namen bestehen aus (englischen) Buchstaben, Zahlen und Unterstrichen. Nach dem $ muss ein Buchstabe stehen.

31 P. Brezany31 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 5: $var = "Hände, Strände, Bände"; Ersetzen Sie ä durch ae.

32 P. Brezany32 Mustererkennung und Reguläre Ausdrücke in Perl Aufgabe 6: $ =~ Dieser Ausdruck zum matchen von Adressen ist nicht perfekt. Suchen Sie Beispiele für a) gültige / vernüftige / realistische Adressen, die nicht gematcht werden. b) unsinnige / unrealistische Adressen, die gematcht werden.

33 P. Brezany33 GREP Program (Unix/Linux Utility)

34 P. Brezany34 Mustererkennung und Reguläre Ausdrücke mit grep grep ist ein Unix-Programm das nach Muster in Dateien sucht Zeilen die das Muster enthalten werden ausgegeben

35 P. Brezany35 Mustererkennung und Reguläre Ausdrücke mit grep Optionen: grep -valle Zeilen die nicht das Muster enthalten grep -nmit Zeilennummer vor der Zeile grep -iignoriert Groß/Kleinschreibung grep -lgibt (nur) den Dateinamen aus grep -cgibt (nur) die Anzahl der Zeilen grep -A 3gibt nach der Zeile noch 3 weitere Zeilen aus grep -Eoder egrep:erweiterte regex grep -niA 1 SMELL joke1 2:How does he smell? 3-Awful.man grep My dog's got no nose. How does he smell? Awful.

36 P. Brezany36 Mustererkennung und Reguläre Ausdrücke mit grep [A-Z] [a-z] [0-9] sind Zeichenklassen: grep '[Oo]' joke1 My dog's got no nose. How does he smell? My dog's got no nose. How does he smell? Awful.

37 P. Brezany37 Mustererkennung und Reguläre Ausdrücke mit grep grep 'l\{2\}' joke1 How does he smell? Der Ausdruck vor \{n\}kommt n Mal vor \{n,\}kommt mindestens n Mal vor \{n,m\} kommt n bis m Mal vor My dog's got no nose. How does he smell? Awful.

38 P. Brezany38 Mustererkennung und Reguläre Ausdrücke mit grep ^Zeilenanfang und Zeilenende$ grep '^$' joke1 findet alle Leerzeilen übrigens: ^ ist der Zirkumflex oder das Caret

39 P. Brezany39 Mustererkennung und Reguläre Ausdrücke mit grep.- irgendein beliebiges Zeichen *- null oder mehrere Male den letzten Ausdruck \- zum maskieren von 'Sonderzeichen'

40 P. Brezany40 Mustererkennung und Reguläre Ausdrücke mit egrep grep -E oder egrep: erweiterte Reguläre Ausdrücke +- ein oder mehrere Male den letzten Ausdruck ?- null oder ein Mal den letzten Ausdruck |- entweder oder ()- z.B.: (eg|le)gs : Entweder eggs oder legs

41 P. Brezany41 -


Herunterladen ppt "Reguläre Ausdrücke / regular expression. P. Brezany2 =~"

Ähnliche Präsentationen


Google-Anzeigen