2010-10-20 22 views

Respuesta

39

Prueba esto: (Rubular)

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

Explicación:

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

La barra emparejado será el último debido a la codicia del .*.

Si su idioma lo admite (o lo requiere), puede utilizar un delimitador diferente de / para la expresión regular para que no tenga que escapar de la barra diagonal.

Además, si analiza rutas de archivos, probablemente encontrará que su idioma ya tiene una biblioteca que hace esto. Esto sería mejor que usar una expresión regular.

+1

+ 1 por ** ... probablemente encontrará que su idioma ya tiene una biblioteca que hace esto ... ** –

0

Si está utilizando sed por ejemplo, usted podría hacer esto para dar salida a todo antes de la última barra:

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

Es seria:

/home/me/documents/morestuff/before_last 
Cuestiones relacionadas