Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#1

TRegEx.Matches verhält sich anders als gedacht

  Alt 4. Jun 2025, 06:52
Hallo!

Ich habe einen String '3d 12h' (3 Tage, 12 Stunden), der eine Zeitspanne repräsentiert. Ich möchte mit TRegEx.Matches prüfen, ob der String das korrekte Format hat und gleichzeitig die beiden numerischen Teile extrahieren. Die Expression '^([0-9]{1,})d ([0-9]{1,2})h$' sollte eigentlich genau das tun laut Testtool (Bild 1). Mit dem folgenden Code kommt in Delphi aber was anderes heraus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  X = '3d 12h';
var
  Matches: TMatchCollection;
begin
  Matches := TRegEx.Matches(X, '^([0-9]{1,})d ([0-9]{1,2})h$');
end;
Zwar matcht die Expression wie gedacht und bringt auch drei Groups, jedoch enthalten alle drei Groups den identischen String '3d 12h' (siehe Bild 2). Wo ist da jetzt der Denkfehler?

Grüße
Cody
Miniaturansicht angehängter Grafiken
bild-1.jpg   bild-2.png  
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat