Ho bisogno di un'espressione regolare che trovi tutto in una stringa fino a includere l'ultima \ o /.Regex per tutto prima dell'ultima barra in avanti o indietro
Ad esempio, c: \ directory \ file.txt dovrebbe tradursi in c: \ directory \
Ho bisogno di un'espressione regolare che trovi tutto in una stringa fino a includere l'ultima \ o /.Regex per tutto prima dell'ultima barra in avanti o indietro
Ad esempio, c: \ directory \ file.txt dovrebbe tradursi in c: \ directory \
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.
^(.*[\\\/])[^\\\/]*$
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
+ 1 per ** ... probabilmente troverai che la tua lingua ha già una libreria che fa questo ... ** –