![]() |
Replace in einem HTML-Text mittels TRegExpr
Hallo allerseits.
In einem String, in dem HTML-Text enthalten ist, möchte ich Teilstrings ersetzen ohne dabei HTML Tags zu verändern. Bsp:
XML-Code:
soll zu
<HTML><a>Ich habe [b]fertig[/b].</a></HTML>
XML-Code:
und nicht zu
<HTML><a>Ich ha[b]b[/b]e [b]fertig[/b].</a></HTML>
XML-Code:
werden.
<HTML><a>Ich ha[b]b[/b]e <[b]b[/b]>fertig</[b]b[/b]>.</a></HTML>
Dazu würde ich die Replace Funktion von TRegExpr verwenden. Hat jemand eine Idee wie diese Expression ausschauen könnte? Oder kennt jemand vielleicht eine andere (schnelle) Möglichkeit? Danke |
Re: Replace in einem HTML-Text mittels TRegExpr
So sollte es auch ohne TRegExpr funktionieren:
Delphi-Quellcode:
procedure Foo(var s: String; const OldPattern, NewPattern: string);
var i: Integer; Tag: Boolean; begin i := 1; while i - 1 <= Length(s) - Length(OldPattern) do begin case s[i] of '<': Tag := true; '>': Tag := false; else if not Tag and (Copy(s, i, Length(OldPattern)) = OldPattern) then begin Delete(s, i, Length(OldPattern)); Insert(NewPattern, s, i); end; end; Inc(i); end; end; |
Re: Replace in einem HTML-Text mittels TRegExpr
Selam!
Das hier:
Code:
sollte das gesuchte "b" matchen.
[^<|/](b)[^>]
Bis neulich ... |
Re: Replace in einem HTML-Text mittels TRegExpr
@Khabarakh: Danke
@Grendel: Auch Danke, aber dieser Ausdruck funktioniert (mit der Funktion Replace) nicht. z.B. bei
Delphi-Quellcode:
wird das erste b nicht gefunden.
abc<abc>
Gibts vielleicht andere Vorschläge? |
Re: Replace in einem HTML-Text mittels TRegExpr
Zitat:
Das Problem ist, daß Replace den gesamten Match ersetzt. Die gesuchte Stelle steht aber in $1 und nicht in $0 (gesamter Match). Keine Ahnung, ob man TRegExpr sagen kann, daß er bitte $1 statt $0 ersetzen soll?! Zitat:
Das es allgemeingültiger sein sollte ging aus deinem ersten Post nicht hervor. Was genau soll das Ding denn können? Bis neulich ... |
Re: Replace in einem HTML-Text mittels TRegExpr
Hi,
vielleicht habe ich es nicht richtig ausgedrückt ;) Also wenn ich b mit X ersetzen möchte soll bei
Delphi-Quellcode:
abc<abc>abc
Delphi-Quellcode:
rauskommen.
aXc<abc>aXc
Ich möchte also alle b ersetzen außer das b steht innerhalb eines Tags. Danke |
Re: Replace in einem HTML-Text mittels TRegExpr
Alles klar! Das ist nicht ganz trivial.
Werd nachher zu Hause mal gucken; Hab mein RegEx Buch gerade nicht zur Hand. Bis neulich ... edit: Mit der TRegExpr wird das wohl nicht funktionieren, da diese kein "lokk ahead" und "look behind" unterstützt. Und ohne wüsste ich das Problem nicht zu lösen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz