Tom H.: Mit Regex zu jedem Match das übergeordnete Element finden

Beitrag lesen

Hallo zusammen,

Ich versuche ein unstrukturiertes Dokument mit Hilfe von Regulären Ausrdrücken für die Weiterverarbeitung im Code zu strukturieren. Das Dokument sieht vereinfacht folgendermassen aus:

<h1>Kapitel 1</h1>
<h2>Kapitel 1.1</h2>
<h1>Kapitel 2</h1>
<div>Ein Text</div>
<h2>Kapitel 2.1</h2>
<h2>Kapitel 2.2</h2>
<div>Ein Text</div>
<h3>Kapitel 2.2.1</h3>

Nun möchte ich mit Hilfe des Regex-Suchpatterns alle Elemente finden und zu jedem Kapitel oder Text der Name des übergeordneten Kapitels auslesen. Beispiel: Wenn die Regex Kapitel 2.2 findet, dann soll am Ende dann sowas wie "Kapitel 2 > Kapitel 2.2" zurückgegeben werden.

Die Regexp um die Elemente zu finden habe ich wie folgt definiert, wobei der Name des Kapitels jeweils in der zweiten Capturing-Gruppe zu finden ist:

(<h.+>|<div>)(.*?)(<\/h.+|<\/div>)

Mir fehlt jedoch eine Idee wie ich zu jedem Match nun das übergeordnete Kapitel dazu finden und zum Beispiel in der ersten Capturing-Gruppe festhalten kann - Habt ihr eine Idee?

Vielen Dank für Eure Hilfe. Tom