uses SysUtils, Classes, uregexpr;
type
tMustBeInClass = class
function regreplace(ARegExpr: TRegExpr): RegExprString;
end;
function tMustBeInClass.regreplace(ARegExpr: TRegExpr): RegExprString;
var
s: string;
begin
s := ARegExpr.Match[0];
s := s.Replace(' ', '');
result := s;
end;
var
s, d: string;
r: TRegExpr;
m: tMustBeInClass;
begin
s := '{ ab c } This is a Demo { x y z }';
writeln('s = ', s);
m := tMustBeInClass.Create;
r := TRegExpr.Create('{[a-zA-Z0-9 ]*}');
d := r.Replace(s, @m.regreplace);
writeln('d = ', d);
readln;
end.
s = { ab c } This is a Demo { x y z }
d = {abc} This is a Demo {xyz}
That should do it. Ugly, but works.
I dont know why it wont accept just "dot" as "all chars". So you might want to add chars if needed. Other RegEx unit maybe would do it better.
EDIT: Better version
uses SysUtils, Classes, uregexpr;
type
tMustBeInClass = class
function regreplace(ARegExpr: TRegExpr): RegExprString;
end;
function tMustBeInClass.regreplace(ARegExpr: TRegExpr): RegExprString;
var
s: string;
begin
s := ARegExpr.Match[0];
s := s.Replace(' ', '');
result := s;
end;
var
s, d: string;
r: TRegExpr;
m: tMustBeInClass;
begin
s := '{ ab c } This is a Demo { x y z } {Foo B- A-R }';
writeln('s = ', s);
m := tMustBeInClass.Create;
r := TRegExpr.Create('({.*})');
r.ModifierG := false;
d := r.Replace(s, @m.regreplace);
writeln('d = ', d);
readln;
end.
s = { ab c } This is a Demo { x y z } {Foo B- A-R }
d = {abc} This is a Demo {xyz} {FooB-A-R}