+ All Categories
Home > Documents > 1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.

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

Date post: 06-Apr-2015
Category:
Upload: emeline-heiner
View: 106 times
Download: 0 times
Share this document with a friend
31
1 Tagesüberblick 4 • Lösung Hausaufgabe/Fragen • Mustervergleiche
Transcript
Page 1: 1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.

1

Tagesüberblick 4

• Lösung Hausaufgabe/Fragen

• Mustervergleiche

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

2

Mustervergleich

- Patternmatching

- Reguläre Ausdrucke / regular expressions

- erweiterte Möglichkeit nach Mustern in Zeichenketten zu suchen

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

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 $_

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

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 ;

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

5

Ergebnis

$result:1

drin

$result:2

abcdE F G hiabcdE F G hi

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

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

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

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

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

8

Beispiel 1#!perl -w

$file = "daten";

open (INFO,$file) || die "Oeffnen $file $!";

while ($zeile=<INFO>) {

if ($zeile =~ /XYZ/) {

print $zeile;

}

}

close (INFO);

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

9

Beispiel 2#!perl -w

$file = "daten";

open (INFO,$file) || die "Oeffnen $file $!";

while (<INFO>) {

if (/XYZ/){

print;

}

}

close (INFO);

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

10

Beispiel 3 & 4#!perl -w

$file = "daten";

open (INFO,$file) || die "Oeffnen $file $!";

while (<INFO>) {if (/XYZ/){print}}

close (INFO);

open (INFO,$file) || die "Oeffnen $file $!";

while (<INFO>) {print if /XYZ/}

close (INFO);

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

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

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

12

Beispiel

$file = "daten.txt";

open (INFO,$file) || die "Oeffnen $file $!";

while (<INFO>) {

if (/X.Z/) {print}# Beachte: keine

} # Konkatenation

close (INFO); # sondern Platzhalter

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

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

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

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.

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

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

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

16

[a-z]+ # Mindestens ein Kleinbuchstabe

# Es können alle Vervielfacher

# verwendet werden

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

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

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

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

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

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

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

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.

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

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.

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

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

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

23

Lösung 4-1

#!perl -w

$file = "daten4-1.txt";

open (INFO,$file) || die "Oeffnen: $file $!";

while (<INFO>) {

if (/^.aus/) {print};

}

close (INFO);

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

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 (<IN>){

s/...$/xyz/;

print OUT;

}

close (IN);

close (OUT);

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

25

Lösung 4-3a

$infile = "daten4-1.txt";

$count = 0;

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

if (/[xy]/) {$count++};

}

close (IN);

print "$count Zeilen mit x oder y sind drin.";

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

26

Lösung 4-3b

$infile = "daten4-1.txt";

$count = 0;

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

$count += /[xy]/;

}

close (IN);

print "$count Zeilen mit x oder y sind drin.";

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

27

Lösung 4-4

$infile = "daten4-1.txt";

$count = 0;

open (IN,$infile) || die "Oeffnen: $infile $!" ;

while (<IN>){

if (/(L|Pfl)aster/) {$count++};

}

close (IN);

print "$count Zeilen mit ..aster sind enthalten.";

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

28

Lösung 4-5a

$infile = "daten4-1.txt";

$count = 0;

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

$count += s/[xX]/Y/g; # Beachte das g

print;

}

close (IN);

print "Ersetzungen: $count";

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

29

Lösung 4-5b

$infile = "daten4-1.txt";

$count = 0;

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

$count += s/x/Y/gi;

print;

}

close (IN);

print "Ersetzungen: $count";

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

30

Lösung 4-6

#!perl -w

$infile = "dir |";

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

if (/\.pl$/){print}; # Beachte /\ ist nicht ^

}

close (IN);

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

31

Lösung 4-7

#!perl -w

$infile = "dir |";

open (IN,$infile) || die "Oeffnen: $infile $!";

while (<IN>){

if(/\.pl$/i){print}; # Beachte /\ ist nicht ^

}

close (IN);


Recommended