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/\?$/; ⇒ true matcht: ein Fragezeichen im String, das am String-Ende stehen muss

16 P. Brezany16 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

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.


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

Ähnliche Präsentationen


Google-Anzeigen