Upload
lou
View
26
Download
2
Embed Size (px)
DESCRIPTION
Einführung in Reguläre Ausdrücke. Was ist das Problem?. Beispiel: Überprüfen von HTML Dateien auf verdoppelte Worte (z.B. das das) Auch über Zeilenenden hinweg ohne Berücksichtigung von "White Space" ohne Berücksichtigung von HTML Tags (z.B. sehr sehr ....). Dateinamen. - PowerPoint PPT Presentation
Citation preview
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 1 Version 1.0a
Einführung in Reguläre Ausdrücke
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 2 Version 1.0a
Was ist das Problem?
• Beispiel:– Überprüfen von HTML Dateien auf
verdoppelte Worte (z.B. das das)– Auch über Zeilenenden hinweg– ohne Berücksichtigung von "White
Space"– ohne Berücksichtigung von HTML
Tags (z.B. <b>sehr</b> sehr ....)
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 3 Version 1.0a
Dateinamen
• "Wildcards" oder "Dateiglobs"– Beispiel (MS DOS): dir 10?s*.bat– Welche Dateien werden damit gefunden?
• Begrenzte Ausdrucksfähigkeit• Limitierter Problemumfang• nicht möglich:
– Suche von Dateinamen beginnend mit ab gefolgt von 1 bis 4 beliebigen Zeichen und endend auf hx.txt
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 4 Version 1.0a
Reguläre Ausdrücke Elemente
• Aufgebaut aus 2 Typen von Zeichen:– Metazeichen - Sonderzeichen wie z.B.
"*" bei Dateinamen– Literale - alle anderen Zeichen
• Muster sollen durch Metazeichen erkannt werden.
• Ähnlich einer Programmiersprache– z.B. ^(From|Subject):– findet Zeilen, die mit From oder Subject
beginnen und danacheinen : haben
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 5 Version 1.0a
Reguläre Ausdrücke - Beispiel
– s!<EM>([0-9]+(\.[0-9]+){3})</EM>!<B>$1</B>!• Sucht IP Adressen, die von den Tags <EM>
und </EM) eingerahmt sind und ersetzt den Rahmen durch <B> und </B>
– Allgemeines Problem: • Ersetze Dies durch das
– Ausdrücke werden aus Bausteinen aufgebaut
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 6 Version 1.0a
Verwendung von Regulären Ausdrücken
• Textstücke in Dateien suchen• Texteditoren (z.B.: UltraEdit)• Unix Programm egrep
– egrep optionen 'Muster'– egrep -ni '^to' x.txt y.txt
• Sucht in den Dateien x.txt, y.txt nach dem Muster 'to' am Anfang jeder Zeile
• ohne Berücksichtigung von Groß und Kleinschreibung und mit Ausgabe von Zeilennummern
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 7 Version 1.0a
Verwendung von Regulären Ausdrücken (Fs.)
• Ergebnis:– x.txt:11:to test or verify the security of this
system. During monitoring, informationx.txt:17:to monitoring of this system. Unauthorized use may subject you to criminalx.txt:22:To be or not to be is the questiony.txt:11:to test or verify the security of this system. During monitoring, informationy.txt:17:to monitoring of this system. Unauthorized use may subject you to criminaly.txt:22:To be or not to be is the question
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 8 Version 1.0a
Verwendung von Regulären Ausdrücken (Fs.)
• Metazeichen (speziell - Position): – ^ .. Zeilenanfang– $ .. Zeilenende
• Literale: to• Optionen:
– i .. Case insensitiv– n .. Nummerierung der Zeilen
• Dateinamen x.txt y.txt
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 9 Version 1.0a
Zeichenklassen
• [....] Suche nach Listen von Zeichen– oder Verknüpfung aller dieser Zeichen– beliebig viele zeichen
• Beispiel: 'B[iu]rma'– passt auf Birma und Burma
• Beispiel: '[rR]ot'– passt auf Rotwein, rot, Protest – aber nicht auf rRot
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 10 Version 1.0a
Zeichenklassen (Fs.)
• Metazeichen in Liste:– '-' von bis
• Beispiel: • '<H[123456]>' erkennt die Header in HTML• '<H[1-6]>' äquivalent zu vorigem Beispiel• [a-z] .. erkennt alle Kleinbuchstaben• [a-z0-9A-Z] .. mehrere Bereiche sind zulässig
– Worauf passt • '^ding$' oder '^$' oder '^' ?
– '-' ist außerhalb der Zeichenklasse kein Metazeichen!
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 11 Version 1.0a
Zeichenklassen (Fs.)• Negierte Zeichenklassen
– '[^...]– '[^1-6] erkennt alle Zeichen außer 1,2,3,4,5
oder 6– 'q[^u]' .. sucht ein 'q' das nicht von einem
'u' gefolgt ist wie z.B. Iraqi.– Warum wird Qantas oder eine Zeile mit Iraq
nicht gefunden?• '^' hat je nach Zusammenhang
unterschiedliche Bedeutungen. (wie z.B. das Wort Hahn)
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 12 Version 1.0a
Beliebiges Zeichen / Alternation
• Das Metazeichen '.' prüft auf ein beliebiges Zeichen
• Beispiel '03[-./]11[-./]2005' findet beliebige Schreibweisen'03.11.2005' findet auch '03-11-1005'– Was ist der Unterschied?
• Alternation - Metazeichen '|' Begrenzung der Reichweite mit ( )– Beispiel: 'Jeffrey|Jeffery' oder 'Jeff(rey|ery)'
oder 'Jeff(re|er)y'– '^From|Subject|Date:' oder '^(From|
Subject|Date):' - Unterschied?
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 13 Version 1.0a
Wortgrenzen / Optionale Elemente
• rot kommt auch in Protest vor• Metassequenzen
– '\<' Wortanfang • (Anfang einer alphanumerischen
Zeichenfolge)– '\>' Wortende
• (Ende einer alphanumerischen Zeichenfolge)
• Metazeichen '?' bedeutet optional– Position hinter dem gesuchten Zeichen– Was findet 'July? (fourth|4(th)?)
ADAT©2004 Dipl. - Ing. Walter Sabin
Seite: 14 Version 1.0a
Wiederholungen• '+' ein oder mehr des vorausgehenden
(1 .. n)• '*' beliebig viel des vorausgehenden
(0 .. n)• +,*,? .. Quantifier• Beispiel: <HR SIZE=14>
– <HR +SIZE *= *[0-9]+ *>• {n,m} Explizites Minimum und
Maximum– Beispiel: [a-zA-Z]{1,5} - Zeichenfolge aus
1 bis 5 Alphazeichen