RobertH: Regulärer Ausdruck - benötige Hilfe bei geteiltem Suchbegriff

Hallo zusammen,
ich habe mich mit einem Regulären Ausdruck festgefressen und wäre für Hilfe sehr dankbar.

Die Aufgabe: Ich bearbeite automatisch generierte HTML-Dateien nach, bei denen das <title>-Element nur fortlaufende Nummern beinhaltet. Stattdessen soll der Inhalt der H1-Überschrift als Titel eingefügt werden (d.h. kopiere den Inhalt von h1 nach title).

Die meisten H1-Überschriften sehen wie folgt aus, d.h. mit zwei Lesezeichen am Anfang:

<h1><a name="XREF_id987643222"></a><a name="XREF_N056A78_03B57060"></a>Hier die Überschrift</h1>

Das klappt soweit auch, ich verwende PowerGrep und folgenden Suchstring, der den Überschriftentext nach den beiden Lesezeichen in eine Capture Group kopiert um ihn anschließend mit einer zweiten Suche in den Titel zu schreiben:

<h1><a[^>]*>[^>]*</a><a[^>]*>[^>]*</a>(?<h1>.*?)</h1>

Leider besitzen aber ca. 25% der Dateien noch ein zusätzliches Lesezeichen kurz vor dem Ende wie folgt:

<h1><a name="XREF_i922"></a><a name="XREF_N0760"></a>Hier die Überschri<a name="CSH_60"></a>ft</h1>

Der Text wird also durch ein <a>-Tag geteilt; ich habe noch keine Möglichkeit gefunden, mit einem Regulären Ausdruck den geteilten Suchbegriff wieder zusammenzufügen und geschlossen in die Capture Group zu kopieren.

Habt ihr eine Idee dazu?

Robert

  1. Hallo RobertH,

    <h1><a name="XREF_id987643222"></a><a name="XREF_N056A78_03B57060"></a>Hier die Überschrift</h1>

    <h1><a name="XREF_i922"></a><a name="XREF_N0760"></a>Hier die Überschri<a name="CSH_60"></a>ft</h1>

    Habt ihr eine Idee dazu?

    Alles zwischen "<" und dem nächsten ">" entfernen oder zwischen "<a" und "/a>", der Rest ist dann die Überschrift.

    Gruß, Jürgen

  2. Hallo!

    Und eine zweite capturing group mit optionalem Inhalt wäre nicht möglich? etwa so:
    <h1>(?:<a[^>]*>[^>]*</a>){2}([^<]*)(?:<[^>]+>)*([^<]*)</h1>

    lG, Jonny 5