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: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
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.
- jacdelad
- Beiträge: 348
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
Re: Regex und Knoten im Hirn
Probier mal
..aber ohne Gewähr.
Code: Alles auswählen
^[a-zA-Z]:(\\\w+)*([\\]|[.][a-zA-Z]+)?$
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
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: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
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
- jacdelad
- Beiträge: 348
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
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]+)?$
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
-
- 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.
- jacdelad
- Beiträge: 348
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
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
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
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.