Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche."—  Präsentation transkript:

1 1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche

2 2 Mustervergleich - Patternmatching - Reguläre Ausdrucke / regular expressions - erweiterte Möglichkeit nach Mustern in Zeichenketten zu suchen

3 3 Operatoren für Mustervergleich m/Muster/[g][i][..]# match / finde /Muster/[g][i][..] # m kann wegfallen falls / # als Begrenzer verwendet # werden. s/Muster/blabla/[g][i][n] # substitute/ersetze # g: global i:ignore case n: Anzahl Substitutions # Weitere Optionen vorhanden. # Wirkt auf $_

4 4 Beispiel #!perl -w $_="abcdefghiabcdefghi"; $result=/def/; # match print "\$result:$result\n"; if (/def/){ print"drin\n" }; $result = s/efg/E F G /g;# substitute print "\$result:$result\n";# Anzahl Substitutions print ;

5 5 Ergebnis $result:1 drin $result:2 abcdE F G hiabcdE F G hi

6 6 Beispiele /XYZ/# Suche XYZ m/bac/# Suche bac m@/ab@# Suche nach /ab /bla/i# Suche bla ohne Berück- # sichtigung von Groß- / # Kleinschreibung s/abc/def/# Ersetze abc durch def s/abc/def/g# Ersetze alle abc durch def

7 7 Bindung an andere Variablen $zeile =~ /inhalt/# zeile enthält inhalt? $zeile !~ /inhalt/# zeile enhält inhalt # nicht? $zeile =~ m/inhalt/# zeile enthält inhalt? $zeile !~ m/inhalt/# zeile enhält inhalt # nicht? $zeile =~ s/a/b/# ersetze alle a in Zeile # durch b

8 8 Beispiel 1 #!perl -w $file = "daten"; open (INFO,$file) || die "Oeffnen $file $!"; while ($zeile= ) { if ($zeile =~ /XYZ/) { print $zeile; } close (INFO);

9 9 Beispiel 2 #!perl -w $file = "daten"; open (INFO,$file) || die "Oeffnen $file $!"; while ( ) { if (/XYZ/){ print; } close (INFO);

10 10 Beispiel 3 & 4 #!perl -w $file = "daten"; open (INFO,$file) || die "Oeffnen $file $!"; while ( ) {if (/XYZ/){print}} close (INFO); open (INFO,$file) || die "Oeffnen $file $!"; while ( ) {print if /XYZ/} close (INFO);

11 11 Spezielle Zeichen (Platzhalter).# Jedes einzelne Zeichen außer newline ^# Zeichenkettenanfang $# Zeichenkettenende *# kein, ein oder mehrere Zeichen wie das # vorherige Zeichen +# ein oder mehrere Zeichen wie das # vorherige Zeichen ?# kein oder ein Zeichen wie das # vorherige Zeichen

12 12 Beispiel $file = "daten.txt"; open (INFO,$file) || die "Oeffnen $file $!"; while ( ) { if (/X.Z/) {print}# Beachte: keine }# Konkatenation close (INFO);# sondern Platzhalter

13 13 Übungen t.e ^A s$ als* als+ als?.* ^$ # Niemals das einschließen in delimiter // vergessen !! # t Zeichen e: tae tee tce # A am Zeichenkettenanfang # s am Ende der Zeichenkette # al und beliebig s: al als alss alsss... # als und beliebig s: als alss alsss... # al und kein oder ein s: al als # Kein oder beliebige Zeichen außer newline # Leere Zeichenkette

14 14 Aufgaben 4-1) Lesen Sie die Datei daten4-1.txt ein und geben Sie alle Zeilen aus, deren zweiter bis vierter Buchstabe „aus“ enthält ( z. B. Haus, Maus etc. ) 4-2) Lesen Sie die Datei daten4-1.txt ein und ersetzen Sie jeweils die letzten drei Zeichen einer Zeile durch die Zeichenfolge xyz und geben alle Zeilen in eine zweite Datei aus.

15 15 Weitere Möglichkeiten: Klassen [qjk]# Entweder q oder j oder k [^qjk]# Weder q noch j noch k [a-z]# Beliebiger Kleinbuchstabe [^a-z]# Kein Kleinbuchstabe [a-zA-Z]# Beliebiger Buchstabe

16 16 [a-z]+# Mindestens ein Kleinbuchstabe # Es können alle Vervielfacher # verwendet werden

17 17 Weitere Möglichkeiten : Sonderzeichen \n# Zeilenvorschub ( newline ) \t# Tabulator \s# Whitespace ( Leerz., Tab., Newline ) \S# kein Whitespace \d# Ziffer ( digit ) \D# keine Ziffer \w# Buchstabe ( word ) [a-zA-Z] !keine Umlaute! \W# kein Buchstabe

18 18 Weitere Möglichkeiten: Gruppen \\# Mit \ werden Zeichen maskiert (H|Feldm)aus # Haus oder Feldmaus (H|L|Kl)aus # Haus, L oder Klaus # Mit Klammern gruppieren # | = oder

19 19 Mustererkennung mit Variablen $_="Haus\n"; $b="a"; if (/$b/) {print}; # Einfache Benutzung Variabler if (/${b}u/) {print} # Variablen als Teilstring s/H$b/Z${b}x/;# Auch im zweiten Feld print; s/$bu/u$b/;# FALSCH Variable $bu statt $b # wird adressiert

20 20 Aufgaben 4-3) Lesen Sie die Datei daten4-1.txt ein und zählen Sie alle Zeilen, die ein x oder y enthalten. 4-4) Lesen Sie die Datei daten4-1.txt ein und zählen Sie alle Zeilen, die Laster oder Pflaster enthalten. 4-5) Lesen Sie die Datei daten4-1.txt ein und wandeln alle x oder X in Y um und geben das Ergebnis aus.

21 21 Aufgaben 4-6) Lesen Sie den Verzeichniseintrag, in dem die Beispieldateien enthalten sind, ein und geben Sie alle Dateien die die Erweiterung.pl haben aus. 4-7) Wie Aufgabe 4-6 nur berücksichtigen Sie die Möglichkeit, daß die Erweiterung auch in Groß- und Kleinbuchstaben geschrieben sein kann.

22 22 Hausaufgabe 4-1 Lesen Sie die Datei daten4-1.txt ein und wandeln alle a in B um. Zählen Sie die Zeilen in denen dies passiert ist. Zählen Sie die Anzahl der Ersetzungen. Geben das Ergebnis aus

23 23 Lösung 4-1 #!perl -w $file = "daten4-1.txt"; open (INFO,$file) || die "Oeffnen: $file $!"; while ( ) { if (/^.aus/) {print}; } close (INFO);

24 24 Lösung 4-2 #!perl -w $infile = "daten4-1.txt"; $ofile = ">output"; open (IN,$infile) || die "Oeffnen: $infile $!"; open (OUT,$ofile) || die "Oeffnen: $ofile $!"; while ( ){ s/...$/xyz/; print OUT; } close (IN); close (OUT);

25 25 Lösung 4-3a $infile = "daten4-1.txt"; $count = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ if (/[xy]/) {$count++}; } close (IN); print "$count Zeilen mit x oder y sind drin.";

26 26 Lösung 4-3b $infile = "daten4-1.txt"; $count = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count += /[xy]/; } close (IN); print "$count Zeilen mit x oder y sind drin.";

27 27 Lösung 4-4 $infile = "daten4-1.txt"; $count = 0; open (IN,$infile) || die "Oeffnen: $infile $!" ; while ( ){ if (/(L|Pfl)aster/) {$count++}; } close (IN); print "$count Zeilen mit..aster sind enthalten.";

28 28 Lösung 4-5a $infile = "daten4-1.txt"; $count = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count += s/[xX]/Y/g;# Beachte das g print; } close (IN); print "Ersetzungen: $count";

29 29 Lösung 4-5b $infile = "daten4-1.txt"; $count = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count += s/x/Y/gi; print; } close (IN); print "Ersetzungen: $count";

30 30 Lösung 4-6 #!perl -w $infile = "dir |"; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ if (/\.pl$/){print};# Beachte /\ ist nicht ^ } close (IN);

31 31 Lösung 4-7 #!perl -w $infile = "dir |"; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ if(/\.pl$/i){print};# Beachte /\ ist nicht ^ } close (IN);


Herunterladen ppt "1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche."

Ähnliche Präsentationen


Google-Anzeigen