OK, Problem gelöst. Vermutlich liegt es TRegExpr, beim anwenden von TPerlRegEx
funkt es einwandfrei, allerdingt leicht abgeändert. TPerlRegEx vertragt z.b.
keine gleichen Bezeichner für die Gruppen, und benötigt ein "P" vor den Gruppennamen.
Das abgeändert, funkt es einwandfrei. Das Tool RegexBuddy rentiert sich zu 100%
Delphi-Quellcode:
{--------------------------------------------}
{}procedure SplitLandPLZOrt(LandPLZOrt:String;
var Land:String;
var PLZ:String;
var Ort:String);
{--------------------------------------------}
const
template = '^(((?P<land>[A-Z]{1,3})[ -])?(?P<plz>\d+)\s+)?(?P<ort>[a-zäöü]+(\s+\d+)?)$|^(?P<plz2>\d+)$';
var
Regex: TPerlRegEx;
begin
Regex := TPerlRegEx.Create(nil);
try
Regex := TPerlRegEx.Create(nil);
Regex.RegEx := template;
Regex.Subject := LandPLZOrt;
Regex.Options := [preCaseless];
if Regex.Match then
begin
Land := Regex.SubExpressions[3];
PLZ := Regex.SubExpressions[4];
if (Regex.SubExpressions[7]<>'')and
(Regex.SubExpressions[5]='')
then Ort := Regex.SubExpressions[7]
else Ort := Regex.SubExpressions[5];
end;{if}
finally
Regex.Free;
end;{try}
end;{SplitLandPLZOrt}
Gruß Kostas