1 / 14

Einführung in Reguläre Ausdrücke

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. <b>sehr</b> sehr ....). Dateinamen.

lou
Download Presentation

Einführung in Reguläre Ausdrücke

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Einführung in Reguläre Ausdrücke

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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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!

  11. 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)

  12. 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?

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

  14. 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

More Related