Hi!
Ich möchte mit meinem Regulären ausdruck ein Wort ausschließen. Und zwar bezwecke ich damit innerhalb einer verschachtelten html struktur immer nur das innerste element zu erkennen.
<div id=1>
<div id=2>
<div id=3>
</div>
</div>
</div>
das soll zum beispiel nach dem schema ersetzt werden: [divID][/divID]
mit einem herkömmlichen regexp hätte das aber zur folge dass das so aussieht:
[div1]
[div2]
[div3]
[/div1]
[/div2]
[/div3]
das liegt daran dass immer die kleinste menge genommen wird, das muss auch so sein, allerdings darf in dieser menge keine andere anweisung sein da er sonst das </div> nicht richtig zuordnen kann.
Wenn ich ihm nicht befehle immer die kleinste Menge zu nehmen kriege ich hiermit probleme:
<div id=1></div><div id=2></div>
da kommt dann sowas raus:
[div1]</div><div id=2>[/div2]
auch nix.. Also muss meine anweisung sein.. immer die kleinste menge also z.b. (.+?) aber ohne <div.*>.. Das hat zur folge dass er die divs immer von innen heraus versucht abzubauen, ich führe den replace einfach so oft aus wie er noch matches findet.
Warum ich nicht einfach [^<>] nehmen kann..
<div id=1>
<div id=2>
<div id=3>
<b>Bla</b>
</div>
</div>
</div>
Das innerste Div wird hier garnicht erkannt.
Hat jemand also ne ahnung wie ich ein Wort Ausschließen kann?
Ein netter user hat sich letztens schon die mühe gemacht und mir ein super beispiel geproggt um das über DOM zu machen aber das ist leider nich so praktikabel da der IE alle zeilenumbrüche killt^^, klar das lässt sich auch umgehen aber die lösung mit dem regexp find ich für mich schöner und übersichtlicher
mfg PoWl