Kleinen Tipp für Regulären Ausdruck

Der Held

Erfahrenes Mitglied
Folgendes Problem:
Ich lese aus einem Verzeichnis diverse .html Dateien aus und möchte die Überschriften innerhalb der <h1>-Tags extrahieren.
Innerhalb der <h1>-Tags können nach dem einleitenden <h1> und vor dem schliessenden </h1> Bilder eingebaut sein, innerhalb des Überschriften-Textes können <br> vorkommen. Ich will den reinen Text ohne Tags extrahieren. Beispielüberschriften könnten also so aussehen:

<h1><img src="blabla.jpg">Überschrift Zeile 1<br>Zeile2<img src="blublub"></h1>

<h1>Zeile 1<br>Zeile 2</h1>

<h1>Überschrift</h1>


Folgendes Schnippselchen habe ich dfür gebaut:

Pattern pattern = Pattern.compile("<h1[^>]*>(<img[^>]*>)?(.*)(<img)?</h1>");
Matcher matcher = pattern.matcher(contents);
if(matcher.find()) System.out.println(matcher.group(2));


Alklerdings werden dabei die etwaigen <br> nicht ausgefiltert (das werde ich wohl in einem zweiten Schritt machen müssen) und die <img>-Tags am Ende werden mitgeliefert, als wären Sie keine eigene Gruppe. wenn ich group(3) ausgeben lasse ist diese auch leer.

Kann ich den RegEx besser formulieren, oder gibts ne leichtere Möglichkeit das zu bewerkstelligen?

Bin für jeden Tip dankbar.
DH
 
Zurück