Regex zum Entfernen aller Verzeichnisnamen von Path (Dateiname lassen)

8

Ich möchte alle Verzeichnisnamen aus einem Pfad entfernen:

%Vor%

sollte

werden %Vor%

Welche Regex sollte ich verwenden oder kann ich replace () von String in Java verwenden? Danke!

    
tzippy 29.01.2011, 18:45
quelle

6 Antworten

19

Versuchen Sie es mit:

%Vor%

Dies gibt den Dateinamen ohne Verzeichnisse zurück.

Beispiel:

%Vor%

Outupt:

%Vor%     
arnaud576875 29.01.2011, 18:51
quelle
11

Sie brauchen keine Regex. Suchen Sie einfach den letzten Schrägstrich und verwenden Sie die Teilzeichenfolge:

%Vor%

oder verwenden:

%Vor%     
dogbane 29.01.2011 18:49
quelle
7

Dies umfasst alle Spektrenverzeichnisse, nachgestellte oder startende Schrägstriche.

Alle anderen hier bisher nicht ...

%Vor%

Druckt

%Vor%

............................................... ........................BEARBEITEN......................... .................................................. .

Erklärung für Uday. Es war eigentlich ziemlich kompliziert, und ich bin mir nicht sicher, ob ich heute für alles argumentieren kann, aber ich werde es versuchen:)

%Vor%

0: Gesamter regulärer Ausdruck

%Vor%

1: Beginnt mit

%Vor%

2: Ein Schrägstrich oder ein Schrägstrich (ja, vier Schrägstriche für einen, verrückt!). Einmal oder gar nicht, also nicht erforderlich.

%Vor%

3: Dieser Schritt ist der komplizierte. Es ist beabsichtigt, alles außer dem letzten zu übergehen, das genau diesem Muster entspricht, einer nicht einfangenden Gruppe (?: ...) würden wir jedes Zeichen mehrmals suchen, gefolgt von einem Schrägstrich.

Die Gruppe kann viele Male wiederholt werden, aber sie ist nicht gierig. Es heißt also, tue dies, außer bis du den folgenden Regex gefunden hast, der in 4 erklärt wurde.

Dieses ganze Stück ist jedoch nicht erforderlich, wegen der? außerhalb der Klammern. Zum Beispiel wird "/RandomFile.pdf/" hier keine Übereinstimmung erzeugen und mit 4 fortfahren.

Aber jetzt finde ich das ein bisschen seltsam, da. + ist gierig, immer noch freut es sich auf den Schrägstrich für das Spiel. Es kann die Art von Gruppen sein, dass sie nicht gierig sind oder ein Fehler in der Java-Syntax.

%Vor%

4: Da die Regex für die gesamte Zeichenfolge gilt, muss sie auch bis zum Ende übereinstimmen. Das vorherige Match bei 3 war nicht gierig und zögerte mit + ?, was bedeutet, dass es nur zusammenpassen wird, solange die Regex nach ihr nicht passt. Unser Wort ist am Ende $ ist innerhalb der Klammern, die mit einem Schrägstrich enden können oder nicht. Ich habe gewählt, den Wurzelweg als der Dateiname zurückzugeben, wenn es keinen Dateinamen, aber nur einen Schrägstrich gibt, da es auch ein Dateiname (Verzeichnisname)

ist

5: Die Klammern sind eine einfangende Gruppe, die wir am Ende zurückgeben.

Ich hoffe, dies verdeutlicht ein wenig.

    
momomo 11.12.2012 09:58
quelle
2

Verwenden Sie ersetzen durch Regex, String name = directory.replaceAll(".*/","") , einfach so.

    
Johan Sjöberg 29.01.2011 18:49
quelle
1

Die vorherigen Antworten sind alle einfacher als die Verwendung eines vollständigen regulären Ausdrucks. Wenn Sie jedoch wirklich eines verwenden möchten, können Sie hier ein Regex-Muster verwenden: ". * / (. +)"

%Vor%

Wie Sie an den anderen Antworten sehen können, ist dies mehr Code, als unbedingt erforderlich ist. Wenn Sie jedoch anspruchsvollere Mustervergleiche und die Extraktion von Strings durchführen, sind reguläre Ausdrücke ein guter Weg.

    
Joe Fernandez 30.01.2011 06:48
quelle
1

Wenn Sie mit einem Dateipfad arbeiten, der von einem Browser an einen Webserver übergeben wurde, können Sie nicht sicher sein, ob es sich um einen DOS-Pfad, einen Unix-Stil oder nur einen Dateinamen ohne Pfad handelt. Wenn Sie wirklich eine RegEx möchten, sollte dies tun:

%Vor%

Dies funktioniert, egal ob es einen DOS-, Unix- oder abwesenden Pfad gibt.

Es wäre jedoch besser lesbar, Teilstrings als Dogbane schlägt vor, , aber Hinzufügen von Logik, um für beide Arten von Dateitrennzeichen zu überprüfen (wieder nur, wenn Sie mit Multi-Plattform-Eingabe beschäftigen).

    
codelahoma 21.02.2011 19:23
quelle

Tags und Links