Hallo Zusammen,
ich habe in einem RegEx String drei Gruppen gebildet land, plz und ort.
Damit soll gefiltet werden:
A-06673 Grän 88 >>land = A PLZ=06673 und der Ort Grän 88
Leider gibt es bis zu vier Varianten:
A-06673 Grän 88
06673 Grän 88
06673
Grän 88
In jeder Gruppe möchte ich das endsprechende Element(land,plz,ort) abfragen.
Mit RegexBuddy getestet funkt der String einwandfrei.
Delphi-Quellcode:
^(((?<land>[A-Z]{1,3})[ -])?(?<plz>\d+)\s+)?(?<ort>[a-zäöü]+(\s+\d+)?)$|^(?<plz>\d+)$
^Land ^plz ^ort
Doch leider kann TRegExpr den String erst garnicht verarbeiten.
Ausserdem würde ich gerne wissen wie ich die drei benannte Gruppen abfragen kann.
Delphi-Quellcode:
{--------------------------------------------}
{}procedure SplitLandPLZOrt(LandPLZOrt:String;
var Land:String;
var PLZ:String;
var Ort:String);
{--------------------------------------------}
const
template = '^(((?<land>[A-Z]{1,3})[ -])?(?<plz>\d+)\s+)?(?<ort>[a-zäöü]+(\s+\d+)?)$|^(?<plz>\d+)$';
var
r : TRegExpr;
begin
r := TRegExpr.Create;
try
r.Expression := template;
if r.Exec(LandPLZOrt) then <<< Fehler TRegExpr(comp): Unrecognized Modifier (pos 21)
begin
// Land := r.Match[0];
// PLZ := r.Match[0];
// Ort := r.Match[0];
end;{if}
finally
r.Free;
end;{try}
end;{SplitLandPLZOrt}
Kann mir bitte jemand Helfen?
Gruß Kostas