Title: Regul
1Reguläre Ausdrücke / regular expression
2 m/\w\-_at_\.\w\-/
3Mustererkennung und Reguläre Ausdrücke in Perl
http//de.wikipedia.org/wiki/Reguläre_Ausdrück
e http//en.wikipedia.org/wiki/Regular_expressio
n http//www.google.at/search?qregexperl
4Reguläre Ausdrücke in der theoretischen Informatik
Alternative Aneinanderreihung Wiederholung
0 oder 1 0 und 1 1n (n 0)
01 0.1 1
01 01 11 1
Beispiel (01) 1100000011111001100 Beispiel (
001) 001001001001001001001
5Reguläre Ausdrücke in der Praxis
84.141.73.125 - - 07/Feb/2006163048 0100
"GET /charlie/burka-girls/burka-girls/zeichnen.gi
f HTTP/1.1" 200 17401 "http//www.horus.at/charli
e/burka-girls/index.php" "Mozilla/4.0
(compatible MSIE 6.0 Windows NT 5.1 Crazy
Browser 1.0.5 .NET CLR 1.0.3705 .NET CLR
1.1.4322)" 21374 84.58.207.237 - -
07/Feb/2006181732 0100 "GET
/charlie/fotos/down.gif HTTP/1.1" 200 79
"http//www.horus.at/charlie/fotos/index.php"
"Mozilla/5.0 (Macintosh U PPC Mac OS X de-de)
AppleWebKit/85.8.2 (KHTML, like Gecko)
Safari/85.8" 29228 84.58.207.237 - -
07/Feb/2006181732 0100 "GET
/charlie/fotos/private_fotos/archiv/iris_party01.
jpg HTTP/1.1" 200 59489 "http//www.horus.at/char
lie/fotos/index.php" "Mozilla/5.0 (Macintosh U
PPC Mac OS X de-de) AppleWebKit/85.8.2 (KHTML,
like Gecko) Safari/85.8" 27171
6Perl (Practical Extraction and Report Language)
!/usr/bin/perl print "Hallo Welt! \n"
7Mustererkennung und Reguläre Ausdrücke in Perl
m/MUSTER/ s/MUSTER/TEXT/ split(MUSTE
R,STRING)
8Mustererkennung und Reguläre Ausdrücke in Perl
!/usr/bin/perl satz "Hallo Welt! \n" if
(satz m/Hallo/) print "Hallo gefunden!"
9Mustererkennung und Reguläre Ausdrücke in Perl
!/usr/bin/perl satz "Hallo Welt!
\n" satz s/Hallo/Tschau/ print satz
10Mustererkennung und Reguläre Ausdrücke in Perl
satz "3 Engel für Charlie!" satz
m/a/ ? true matcht erstes kleines a im
String
11Mustererkennung und Reguläre Ausdrücke in Perl
satz "3 Engel für Charlie!" satz
m/\d/ ? true matcht erste Ziffer (3) im
String (digit)
12Mustererkennung und Reguläre Ausdrücke in Perl
satz "3Engel für Charlie!" satz
m/\D/ ? true matcht erste Nicht-Ziffer
(Leerzeichen nach 3 und vor E)
13Mustererkennung 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
14Mustererkennung 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.
15Mustererkennung 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
16Mustererkennung 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
17Mustererkennung 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.
18Mustererkennung 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, Chrlie, Ch rlie
matcht nicht Chrlie, Chaarlie
19Mustererkennung 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
20Mustererkennung 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.
21Mustererkennung 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!"
22Mustererkennung und Reguläre Ausdrücke in Perl
satz "Teufel 1, Teufel 2 und Teufel
3." satz s/(\d)/v1.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.
23Mustererkennung und Reguläre Ausdrücke in Perl
satz "Engel A" satz s/(.)(.)(.)/32
1/ satz ist "Angel E" Der Ausdruck
vertauscht den ersten und den letzten
Buchstaben. (.) speichert den ersten
Buchstaben in 1 (.) speichert die mittleren
Buchstaben in 2 (.) speichert den letzten
Buchstaben in 3
24 m/\w\-_at_\.\w\-/
25Mustererkennung und Reguläre Ausdrücke in Perl
Beispiel E-Mail Adresse? email
m/\w\-_at_\.\w\-/ Beispiel
Österreichische Postleitzahl? plz
m/A\s-\s\d4/ Beispiel whitespace vorne
und hinten entfernen name
s/\s(.?)\s/1/
26- \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
27Mustererkennung 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/)
28Mustererkennung und Reguläre Ausdrücke in Perl
Aufgabe 2 if ( email m/()-\)/ )
print "Smile!" Welches Muster wird hier
erkannt? Wann wird Smile! ausgegeben?
29Mustererkennung und Reguläre Ausdrücke in Perl
Aufgabe 3 Erkennen Sie das grundsätzliche
Format eines UNET-Logins. (also a und
Matrikelnummer z.B. a0409142). Folgende
Regeln gilt es einzuhalten Ein UNET-Login
beginnt mit einem a. Danach folgen 7
(beliebigen) Ziffern.
30Mustererkennung 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.
31Mustererkennung und Reguläre Ausdrücke in Perl
Aufgabe 5 var "Hände, Strände,
Bände" Ersetzen Sie ä durch ae.
32Mustererkennung und Reguläre Ausdrücke in Perl
Aufgabe 6 email m/\w\-_at_\.\w\-/
Dieser Ausdruck zum matchen von E-Mail
Adressen ist nicht perfekt. Suchen Sie
Beispiele für a) gültige / vernüftige /
realistische E-Mail Adressen, die nicht
gematcht werden. b) unsinnige / unrealistische
E-Mail Adressen, die gematcht werden.
33GREP Program (Unix/Linux Utility)
34Mustererkennung 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
35Mustererkennung und Reguläre Ausdrücke mit grep
My dog's got no nose. How does he smell? Awful.
Optionen grep -v alle Zeilen die nicht das
Muster enthalten grep -n mit Zeilennummer vor
der Zeile grep -i ignoriert Groß/Kleinschreibung
grep -l gibt (nur) den Dateinamen aus grep
-c gibt (nur) die Anzahl der Zeilen grep -A
3 gibt nach der Zeile noch 3 weitere Zeilen
aus grep -E oder egrep erweiterte regex grep
-niA 1 SMELL joke1 2How does he
smell? 3-Awful. man grep
36Mustererkennung und Reguläre Ausdrücke mit grep
My dog's got no nose. How does he smell? Awful.
A-Z a-z 0-9 sind Zeichenklassen grep
'Oo' joke1 My dog's got no nose. How does he
smell?
37Mustererkennung und Reguläre Ausdrücke mit grep
My dog's got no nose. How does he smell? Awful.
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
38Mustererkennung und Reguläre Ausdrücke mit grep
Zeilenanfang und Zeilenende grep ''
joke1 findet alle Leerzeilen übrigens ist
der Zirkumflex oder das Caret
39Mustererkennung und Reguläre Ausdrücke mit grep
. - irgendein beliebiges Zeichen - null oder
mehrere Male den letzten Ausdruck \ - zum
maskieren von 'Sonderzeichen'
40Mustererkennung 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.
(egle)gs Entweder eggs oder legs
41-