![]() |
Regex: Teil des Datenamens erfassen
Hallo, ich verzweifel gerade an einem Regex (nichts neues, ich bin k..cke mit RegEx)...
Ich habe einen Dateinamen in folgendem Format : POST_123456789_12345678_XX123456/01-2022-123456789-654321-Lieferschein.tif Davon möchte ich den Teil vor dem Lieferschein (fett markiert) herauslesen. Vorhergehende Nummern müssen nicht immer die gleiche Länge haben, aber die Anzahl der Blöcke und die Trennzeichen (_-/) sind immer da. Ideen ? |
AW: Regex: Teil des Datenamens erfassen
Mit geht es mit RegEx ähnlich. In diesem Fall würde ich ein String.Split verwenden.
Delphi-Quellcode:
Die RegEx Profis haben da möglicherweise eine besseren Vorschlag.
var
SA: TArray<string> ; Nr: string; begin ... SA := AFileName.Split(['_','-']); if Length(SA) = 9 then begin Nr := SA[7]; ... end; ... end; |
AW: Regex: Teil des Datenamens erfassen
Das ist leider zu spezifisch, ich wollte eine Steuertabelle machen, wo ich unter anderem sagen kann, dass das Feld <Feldname>=Dateiname(<RegEx>) so zu finden ist. Jeder Eintrag der mit -_/ getrennt ist, ist ein Wert, den man lesen kann. Im Moment brauche ich nur einen. Damit es immer gleich ist von der Herangehensweise, würde ich das gerne mit RegEx lösen wollen.
Aber danke! |
AW: Regex: Teil des Datenamens erfassen
Ich weiß nicht, ob es einfacher geht, aber eine Möglichkeit wäre so (sprich 5 Gruppen mit Zahlen, X und / gefolgt von - oder _ und dann die Zahl, die dich interessiert):
Code:
Was davon noch variabler sein muss, müsstest du schauen.
POST_([0-9X\/]*[\-\_]){5}([0-9]*)\-Lieferschein\.tif
Ich weiß nicht, ob du das kennst, aber es gibt auch Testseiten wie diese: ![]() |
AW: Regex: Teil des Datenamens erfassen
So?!
Code:
-([0-9]{6})-Lieferschein.tif$
So hat man gleich alle Gruppen (7 Gesamt):
Code:
POST_([0-9]{9})_([0-9]{8})_(XX[0-9]{6})\/([0-9]{2})-([0-9]{4})-([0-9]{9})-([0-9]{6})-Lieferschein.tif$
|
AW: Regex: Teil des Datenamens erfassen
Zitat:
das sieht dann so aus:
Code:
Zusätzlich habe ich Lieferschein und tif noch case-insensitive gemacht.
POST_([0-9A-Z\/]*[\-\_]){5}([0-9]*)\-(?i)Lieferschein\.(?i)tif
Zitat:
|
AW: Regex: Teil des Datenamens erfassen
Code:
gibt dir jeweils ein Match für alle von Sonderzeichen separierten Teile deines Dateinamens, siehe
(?:[0-9A-Za-z]+)
![]() |
AW: Regex: Teil des Datenamens erfassen
Warum so kompliziert?
Delphi-Quellcode:
[0-9A-Za-z]+
bzw. wenn case-insensitive
Delphi-Quellcode:
[0-9A-Z]+
und falls z.B. - oder / mit zum "Text" gehören, dann die auch noch mit rein, z.B.
Delphi-Quellcode:
(Modifier i nicht vergessen, oder A-Z wieder rein)
[0-9a-z-]+
Delphi-Quellcode:
ähhhh
[0-9-]+|[0-9a-z]+
Delphi-Quellcode:
(?!-)[0-9-]+(?<!-)|[0-9a-z]+
|
AW: Regex: Teil des Datenamens erfassen
ah cool, das verstehe ich sogar :O
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz