Programmieren II (WF2)

Aufgabenblatt 12: Reguläre Ausdrücke

Aufgabe 12.1: Postleitzahlen extrahieren

Eine Postleitzahl...

  • besteht aus 5 Ziffern (z.B. 89075).
  • hat optional eine Länderkennung vorangestellt (z.B. D-).
  • wird gefolgt von einem oder mehreren Leerzeichen und einem oder mehreren Zeichen (z.B. ␣Ulm).

Entwerfen Sie einen regulären Ausdruck, um Postleitzahlen aus einem Text zu extrahieren! Setzen Sie Gruppen so ein, dass Sie die Postleitzahl und die Länderkennung problemlos extrahieren können.

Prüfen Sie Ihre RegEx mit einem kleinen Java-Programm an einem Beispieltext, z.B.

Hans Maier, D-89075 Ulm; Tanja Schneider, 76133  Karlsruhe; Kurt Kistner,A-1010 Wien.

Aufgabe 12.2: Überschriften in Webseiten suchen

Schreiben Sie ein Java-Programm, das...

  • eine HTML-Datei in eine Zeichenkette einliest.
  • aus dieser Zeichenkette alle Überschriften der obersten Ebene extrahiert1.
  • diese auf der Konsole ausgibt.

Erweitern Sie Ihr Programm dann so, dass auch alle anderen Überschriften extrahiert und ausgegeben werden. Die Unterüberschriften sollen bei der Ausgabe auf der Konsole eingerückt werden: <h2> um 1 Leerzeichen, <h3> um 2 Leerzeichen, <h4> um 3 Leerzeichen.

Nutzen Sie zur Gewinnung der Informationen einen geeigneten Regulären Ausdruck!

Hinweis: Wenn Sie Zeichenketten über mehrere Zeilen hinweg extrahieren möchten, müssen Sie das bei der Erstellung des Pattern angeben: Pattern p = Pattern.compile(regex, Pattern.MULTILINE);

Aufgabe 12.3: Exceptions in Logdateien analysieren (Zusatzaufgabe)

Stacktrace

Extrahieren Sie mit Hilfe zweier RegEx aus einer Logdatei des Betriebssystems Android2...

  • alle Informationen über aufgetretene Exceptions.
  • unabhängig davon aus allen Zeilen, die Bestandteil eines Stacktrace sind, Informationen zu Methodenname, Datei und
    Zeilennummer.

Schreiben Sie ein Programm, das eine Logdatei öffnen kann und die Informationen auf der Konsole ausgibt.

Eine Logdatei finden Sie hier: adb_logcat.txt

Ein Ausschnitt aus der Ausgabe Ihres Programms könnte so aussehen:

Exceptions:
java.lang.StringIndexOutOfBoundsException
java.io.FileNotFoundException

Stacktraces:
Methode: makeView - Datei: ListView.java - Zeile: 1727
Methode: fillDown - Datei: ListView.java - Zeile: 652
...

Aufgabe 12.4: Methodennamen aus Java-Quelltext extrahieren (Zusatzaufgabe)

Schreiben Sie ein Programm, das mit Hilfe eines Regulären Ausdrucks alle Methodennamen aus einer .java-Datei extrahiert!

Hinweis: Da sich Methodendeklarationen über mehrere Zeilen erstrecken können, sollten Sie bei der Erstellung des Pattern den MULTILINE-Modus aktivieren: Pattern p = Pattern.compile(regex, Pattern.MULTILINE);


  1. Überschriften der obersten Ebene befinden sich zwischen den Tags <h1> und </h1>. Weitere Gliederungsebenen für Unterabschnitte sind <h2>...</h2>, <h3>...</h3> und <h4>...</h4>

  2. Android ist ein Betriebssystem vor allem für mobile Geräte (Mobiltelefone, Tablets,...), siehe Artikel auf Wikipedia