2010-10-20 12 views

risposta

39

Prova questo: (Rubular)

/^(.*[\\\/])/ 

Spiegazione:

 
^  Start of line/string 
(  Start capturing group 
.*  Match any character greedily 
[\\\/] Match a backslash or a forward slash 
)  End the capturing group 

La barra abbinato sarà l'ultimo a causa dell'avidità dello .*.

Se la lingua lo supporta (o lo richiede), è possibile utilizzare un delimitatore diverso da / per l'espressione regolare in modo che non sia necessario sfuggire alla barra di avanzamento.

Inoltre, se si analizzano i percorsi dei file, probabilmente la tua lingua dispone già di una libreria che esegue questa operazione. Questo sarebbe meglio che usare un'espressione regolare.

+1

+ 1 per ** ... probabilmente troverai che la tua lingua ha già una libreria che fa questo ... ** –

0

Se stai usando sed per esempio, si potrebbe fare questo per l'output tutto prima dell'ultima barra:

echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$:: 

Sarà uscita:

/home/me/documents/morestuff/before_last 
Problemi correlati