Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [RegEx] Wie kann ich das lösen? (https://www.delphipraxis.net/107859-%5Bregex%5D-wie-kann-ich-das-loesen.html)

Telefonkabel 3. Feb 2008 17:26


[RegEx] Wie kann ich das lösen?
 
Hy!
Ich habe ein kleines Problem und komme leider nicht auf die Lösung.
Und zwar möchte ich über RegEx aus einem Text Dateinamen filtern.
Dabei ist das Problem, dass eine Datei so heißen kann:
test.test.test.jpg
Das Problem dabei ist, dass die Namen eben mehrere Punkte enthalten können und ich nicht weiß, was hinter dem Dateianhängsel (hier: jpg) kommt (ich weiß nur, dass es entweder ein Leerzeichen, oder ein Sonderzeichen ist).
Ich habe eben immer bis zu dem Punkt vor dem Anhängsel alle Zeichen zugelassen und dann so lange laufen lassen, bis kein Buchstabe mehr kommt. Aber im oberen Bsp. funktioniert das nicht und er gibt mir nur test.test zurück, anstatt eben test.test.test.jpg (was ja klar ist).
Ich habe aber keine Idee wie ich das lösen kann.
Kann mir bitte jemand helfen?

Dax 3. Feb 2008 17:32

Re: [RegEx] Wie kann ich das lösen?
 
Wie wärs mit
Code:
([a-zA-Z.]+)

Telefonkabel 3. Feb 2008 17:35

Re: [RegEx] Wie kann ich das lösen?
 
Er soll mir ja aber auch die Dateierweiterung mitgeben.
Und es ist möglich Sonderzeichen mit in den Datennamen unterzubringen, wie z.B. _ ( ) etc.


Aber danke schonmal.

EDIT:
Ich weiß lediglich, dass die Datei auf einen Punkt und dann die Erweiterung, die NUR aus Buchstaben besteht, endet.

toms 3. Feb 2008 17:36

Re: [RegEx] Wie kann ich das lösen?
 
Hallo

Bei Regexlib.com gibt's ein paar nette Ausrücke.

Direkt testen kannst du die Funktion für Filenames* hier

*
Code:
\A([A-Za-z0-9'~`!@#$%&^_+=\(\){},\-\[\]\;])+?([ A-Za-z0-9'~`
!@#$%&^_+=\(\){},\-\[\];]|([.]))*?(?(3)(([ A-Za-z0-9'~`!@#$
%&^_+=\(\){},\-\[\]\;]*?)([A-Za-z0-9'~`!@#$%&^_+=\(\){},\-\[
\];])+\z)|(\z))

Telefonkabel 4. Feb 2008 13:35

Re: [RegEx] Wie kann ich das lösen?
 
Danke, toms!
Leider hat mir die Seite auch nicht wirklich geholfen. :(
Aber mir ist eine neue Idee gekommen.
Und zwar:
Man könnte doch überprüfen, ob noch ein Punkt nach einer Zeichenkette folgt, sihc auf diese Weise bis zum letzten Punkt vor der Erweiterung durchhangeln und dann nurnoch nach Buchstaben suchen.
Die Frage ist nur, wie macht man das? ^^
Wäre super, wenn mir jemand helfen könnte.

toms 4. Feb 2008 14:08

Re: [RegEx] Wie kann ich das lösen?
 
Zitat:

Zitat von Telefonkabel
Leider hat mir die Seite auch nicht wirklich geholfen. :(

Inwiefern hat der Code nicht funktioniert?

Im Test wurde der Dateiname "test.test.test.jpg" richtig geparst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz