14
ADAT ©2004 Dipl. - Ing. Walter Sabin Seite: 1 Version 1.0a Einführung in Reguläre Ausdrücke

Einführung in Reguläre Ausdrücke

  • 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

Page 1: Einführung in Reguläre Ausdrücke

ADAT©2004 Dipl. - Ing. Walter Sabin

Seite: 1 Version 1.0a

Einführung in Reguläre Ausdrücke

Page 2: 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 ....)

Page 3: Einführung in Reguläre Ausdrücke

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

Page 4: Einführung in Reguläre Ausdrücke

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

Page 5: Einführung in Reguläre Ausdrücke

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

Page 6: Einführung in Reguläre Ausdrücke

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

Page 7: Einführung in Reguläre Ausdrücke

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

Page 8: Einführung in Reguläre Ausdrücke

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

Page 9: Einführung in Reguläre Ausdrücke

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

Page 10: Einführung in Reguläre Ausdrücke

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!

Page 11: Einführung in Reguläre Ausdrücke

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)

Page 12: Einführung in Reguläre Ausdrücke

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?

Page 13: Einführung in Reguläre Ausdrücke

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)?)

Page 14: Einführung in Reguläre Ausdrücke

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