gelöst: Dateiname und -Pfad per Regex prüfen

Anfängerfragen zum Programmieren mit PureBasic.
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

gelöst: Dateiname und -Pfad per Regex prüfen

Beitrag von bin_neu_hier »

Hallo,

leider tu ich mir sehr schwer mit dem RegEx-Gedöhns und könnte da handfeste Unterstützung gebrauchen. Ich würde gern die Dateinamen (mit und ohne Laufwerk und Pfad), die der User meines Progrämmchens eingibt, auf Windows-Kompatibilität prüfen und würde das gerne mit einem RegEx-Vergleich prüfen. Hat jemand einen solchen RegEx-String, mit dem das zuverlässig zu machen ist?
Zuletzt geändert von bin_neu_hier am 13.08.2022 12:24, insgesamt 2-mal geändert.
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Regex und Knoten im Hirn

Beitrag von mk-soft »

Siehe PB Hilfe

Code: Alles auswählen

Ergebnis = CheckFilename(Dateiname$)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Regex und Knoten im Hirn

Beitrag von NicTheQuick »

CheckFilename prüft aber nur den Dateinamen ansich, nicht den ganzen Pfad.

@bin_neu_hier: Wenn du es selbst hinkriegen möchtest, empfehle ich dir https://regex101.com/. Da kannst du dann alle möglichen Pfade, die du erkennen und nicht erkennen willst, im unteren Feld eingeben und im oberen kannst du deine Regular Expression definieren und schauen, ob sie genau das richtige macht. Außerdem gibt es dort super Erklärungen zu allen möglichen Dingen, die RegEx so kann.
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Regex und Knoten im Hirn

Beitrag von jacdelad »

Probier mal

Code: Alles auswählen

^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
..aber ohne Gewähr.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Regex und Knoten im Hirn

Beitrag von NicTheQuick »

jacdelad hat geschrieben: 08.08.2022 22:34 Probier mal

Code: Alles auswählen

^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
..aber ohne Gewähr.
Damit funktionieren auf jeden Fall schon mal keine Netzwerkpfade, da die in der Regel keinen Laufwerksbuchstaben haben.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Regex und Knoten im Hirn

Beitrag von NicTheQuick »

Auf Anhieb hab ich noch was auf Stackoverflow gefunden: https://stackoverflow.com/a/64822303/4239139
Dabei ist auch ein Link zu Regex101 zum herumexperimentieren: https://regex101.com/r/9J5JPW/1
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Regex und Knoten im Hirn

Beitrag von jacdelad »

NicTheQuick hat geschrieben: 08.08.2022 22:39
jacdelad hat geschrieben: 08.08.2022 22:34 Probier mal

Code: Alles auswählen

^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
..aber ohne Gewähr.
Damit funktionieren auf jeden Fall schon mal keine Netzwerkpfade, da die in der Regel keinen Laufwerksbuchstaben haben.
Schtümmt. Besser:

Code: Alles auswählen

^([a-zA-Z]:)|(\\)(\\\w+)*([\\]|[.][a-zA-Z]+)?$
...allerdings werden hier an quasi jeder Stelle wilde "\" akzeptiert, also auch "\\\Netzwerk\Bla\Trödel.exe". Ich weiß noch nicht, wie man das austreiben kann.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: Regex und Knoten im Hirn

Beitrag von bin_neu_hier »

Hi allerseits!
Erstmal Danke für Euren Input! Ob die "wilden \\" ein Problem darstellen, weiß ich noch gar nicht. Könnte denn das Explorerlistgadget überhaupt Netzwerkpfade öffnen bzw. anzeigen? Wenn das Gadget die Sache schon limitieren würde, dann bräuchte ich nur was, das innerhalb des Gadgets funzt.

Plan "B": Wo fände ich denn Angaben, was ein "Bulletproof"-Dateipfad bzw. Dateiname in Windows enthalten darf und was nicht. Vielleicht muss es dann doch eine Procedure werden mit zig IF's und so.
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Regex und Knoten im Hirn

Beitrag von jacdelad »

Hm, also wenn ich mich nicht komplett irre sollte mit folgendem Code alles abgedeckt sein, auch wilde "\":

Code: Alles auswählen

CreateRegularExpression(0,"^([a-zA-Z]:)|(\\)(\\\w+)*([\\]|[.][a-zA-Z]+)?$")

Procedure Check(input.s)
  ProcedureReturn Bool(MatchRegularExpression(0,input) And Not (FindString(Right(input,Len(input)-1),"\\") Or Right(input,1)="\"))
EndProcedure

Debug Check("C:\Windows\System32\MyFile.sys") ;1
Debug Check("C:\Windows\System32\MyFile")     ;1
Debug Check("C:\Windows\System32\MyFile.sys\");0
Debug Check("C:\Windows\System32\\MyFile.sys");0
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Regex und Knoten im Hirn

Beitrag von Nino »

Kann dieser Thread bitte umbenannt werden in „Dateipfad prüfen“ o.Ä.?
Der momentane Titel „Regex und Knoten im Hirn“ ist für spätere Leser und beim Suchen nicht besonders hilfreich.
Antworten