java regulärer Ausdruck zum Anpassen des Dateipfads

7

Ich habe versucht, einen regulären Ausdruck zu erstellen, um den Dateipfad in Java wie

zu finden
  

C: \ abc \ def \ ghi \ abc.txt

Ich habe dieses ([a-zA-Z]:)?(\[a-zA-Z0-9_-]+)+\? versucht, wie folgender Code

%Vor%

Aber es gibt mir immer, falsch als Ergebnis. Bitte helfen Sie mir.

Danke

    
Jijoy 20.12.2010, 12:25
quelle

8 Antworten

15

Java verwendet Backslash-Escaping, weißt du, also musst du deine Backslashes zweimal entzweien, einmal für die Java-Zeichenkette und einmal für die Regexp.

%Vor%

Ihr Regexp entsprach einem Literal [-zA-Z0-9_- 'String und einem Literal'? ' Am Ende. Ich habe auch einen Punkt hinzugefügt, der 'abc.txt' erlaubt.

Denken Sie darüber nach, einen anderen Mechanismus zum Ermitteln gültiger Dateinamen zu verwenden, da es verschiedene Schemata (d. h. Unix) gibt. java.util.File wird wahrscheinlich eine Ausnahme auslösen, wenn der Pfad ungültig ist, was eine gute Alternative sein könnte, obwohl ich keine Ausnahmen für den Kontrollfluss verwenden möchte ...

    
falstro 20.12.2010, 12:29
quelle
3

Verwenden Sie diese Regex:

%Vor%

Ich habe zwei Änderungen hinzugefügt: Sie haben vergessen, . für die Übereinstimmung des Dateinamens abc.txt hinzuzufügen und Backslash-Escaping ( \ ) wurde ebenfalls benötigt.

    
darioo 20.12.2010 12:30
quelle
1

Es stimmt nicht überein, weil Ihre Regex nur mit Pfaden und nicht mit Dateien übereinstimmt. - Korrekter: Es akzeptiert nicht den Punkt in Ihrem Dateinamen.

Und zusätzlich gibt es das Fluchtproblem, das von Rogen erwähnt wird.

    
Ralph 20.12.2010 12:29
quelle
1

Nur gesagt, man sollte . in

ersetzen %Vor%

mit \.

. ist für jedes Zeichen in einem regulären Ausdruck (Java-Stil) gedacht, während
\. speziell für. Zeichen, und wir müssen dem Backslash entkommen

    
finbrein 19.09.2011 13:00
quelle
1

Da der Pfad Ordner enthält und der Ordnername ein beliebiges anderes Zeichen als

enthalten kann
  

? \ /: "* & lt; & gt;

Wir können die folgende Regex verwenden, um einen Verzeichnispfad zu finden [es verwendet alle Symbole, die sich ein Ordnername leisten kann]

%Vor%     
Cjo 12.02.2016 13:18
quelle
0

Es gibt zwei Gründe, warum Sie falsch sind. Die erste ist, dass Sie \\ anstelle von \ benötigen, weil Sie diese Zeichen entkommen müssen. Und das zweite ist, dass Sie ein Punktzeichen verfehlen, Sie können es vor a-z als ([a-zA-Z]:)?(\\[.a-zA-Z0-9_-]+)+\\?

einfügen     
Artur 20.12.2010 12:32
quelle
0

Hier ist richtige Regex für Windows-Dateisystem:

Regulärer Ausdruck:

%Vor%

als Java-Zeichenfolge

%Vor%     
To Kra 24.10.2014 08:57
quelle
0

Wenn es nur dem Pfad von Dateien entsprechen muss, die auf demselben Computer liegen, auf dem Ihre App ausgeführt wird, können Sie Folgendes verwenden:

%Vor%

Wenn Sie also Ihre App unter Windows ausführen, fängt der obige Code ungültige Windows-Pfade ab und wenn Sie unter Unix laufen, werden ungültige Unix-Pfade usw. gefunden.

    
iammyr 17.09.2015 09:11
quelle

Tags und Links