Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TRegExpr benannte Gruppen abfragen

  Alt 12. Jul 2007, 10:51
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
  Mit Zitat antworten Zitat