freeman: RegEx um String zu Suchen der nicht zwischen < > liegt

Hi,

ich bräuchte ein RegEx um einen String zu Suchen der nicht Zwischen eckigen Klammern (<,>) liegt.
Es geht um eine Suchfunktion in einer Website welche gefundene Texte in bestimmten Elementen farblich markiert.

Beispiel:
Gesucht wird nach dem String: "Test"

<span class="test">Dies ist ein test</span>
Soll ersetzt werden durch:
<span class="test">Dies ist ein <span class="gefunden">test</span></span>

Der ClassName "test" darf dabei nicht gefunden werden. Oder wenn z.B. der gesuchte String in der URL eines <a> Tags vorkommt.

Entfernen der Tags ist leider schwierig, da dann ja die Formatierung verloren gehen würde.

Ein einzelnes Pattern wäre am besten, leider waren meine Versuche bis jetzt ohne wirklichen Erfolg.
Ansonsten müsste man denke ich den String "zerschneiden" und mit Positionen Arbeiten, da sonst der Replace nicht mehr ordentlich funktioniert.

Oder gibt es sonst eine schöne Alternative?

Danke!
Grüße,
Philip

  1. klein mäxchen würds mit dem hier versuchen (nicht getestet)

    /<.+>.*(test).*</.+>/

  2. Hallo!

    Ich weiß nun nicht, in welcher Programmiersprache du das machst, deshalb hier in perl:

      
    my $string = '<span class="test">Dies ist ein test</span>';  
    $string =~ s{(?<!<)([^<]*)test}{$1<span class="gefunden">test</span>}g;  
    print $string, "\n"  
    
    

    bringt bei mir:

    <span class="test">Dies ist ein <span class="gefunden">test</span></span>

    Jetzt ist es deine Aufgabe, Beispiele zu finden, für die dieser RA wieder nicht mehr funktioniert.

    Grüße, Skrilax

    --
    Metal mit mehr als 60 bpm ist was für Pussies.