gelöst: Dateiname und -Pfad per Regex prüfen
-
- Beiträge: 105
- Registriert: 06.03.2019 21:52
gelöst: Dateiname und -Pfad per Regex prüfen
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?
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.
Irgendwas muss man ja gut können.
Re: Regex und Knoten im Hirn
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
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- 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
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.
@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.
Re: Regex und Knoten im Hirn
Probier mal
..aber ohne Gewähr.
Code: Alles auswählen
^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
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
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
- 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
Damit funktionieren auf jeden Fall schon mal keine Netzwerkpfade, da die in der Regel keinen Laufwerksbuchstaben haben.jacdelad hat geschrieben: 08.08.2022 22:34 Probier mal..aber ohne Gewähr.Code: Alles auswählen
^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
- 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
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
Dabei ist auch ein Link zu Regex101 zum herumexperimentieren: https://regex101.com/r/9J5JPW/1
Re: Regex und Knoten im Hirn
Schtümmt. Besser:NicTheQuick hat geschrieben: 08.08.2022 22:39Damit funktionieren auf jeden Fall schon mal keine Netzwerkpfade, da die in der Regel keinen Laufwerksbuchstaben haben.jacdelad hat geschrieben: 08.08.2022 22:34 Probier mal..aber ohne Gewähr.Code: Alles auswählen
^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
Code: Alles auswählen
^([a-zA-Z]:)|(\\)(\\\w+)*([\\]|[.][a-zA-Z]+)?$
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
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
-
- Beiträge: 105
- Registriert: 06.03.2019 21:52
Re: Regex und Knoten im Hirn
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.
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.
Irgendwas muss man ja gut können.
Re: Regex und Knoten im Hirn
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
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Re: Regex und Knoten im Hirn
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.
Der momentane Titel „Regex und Knoten im Hirn“ ist für spätere Leser und beim Suchen nicht besonders hilfreich.