Hi,
ich benutze die TRegExpr Klasse von Andrey Sorokin. Nun möchte ich in eine Text alle großen "I" Buchstaben gegen ein kleines "l" ersetzen, aber nur wenn das große "I" nicht am Anfang des Wortes steht. Jedoch bekomme ich eine Fehlermeldung: "TRegExpr(comp): Urecognized Modifier". Kann es sein das diese Klasse kein "positive look-behind" unterstützt?
Delphi-Quellcode:
function SpecialL(AText: string): string;
begin
result := AText;
with TRegExpr.Create do
try
result := ReplaceRegExpr('(?<=[\S])I', AText, 'l', True);
finally
Free;
end;
end;
Mit diesem Online-Tester klappt es:
RegEx Tester
Alternative könnte man sowas machen, aber vielleicht mache ich ja was an der Systax falsch:
Delphi-Quellcode:
function SpecialL(AText: string): string;
var
Offset: Integer;
begin
result := AText;
Offset := Pos('I', AText);
while not(Offset = 0) do
begin
if (Offset > 1) and (AText[Offset - 1] in ['A' .. 'Z', 'a' .. 'z']) then
AText[Offset] := 'l';
Offset := PosEx('I', AText, Offset + 1);
end;
result := AText;
end;