2011-12-21 10 views
9

Sto cercando di utilizzare un'espressione regolare in PowerShell per rimuovere tutto dall'ultima barra di questa stringa;Espressione regolare, rimuovere tutto dopo l'ultima barra diretta

NorthWind.ac.uk/Users/Current/IT/Surname, FirstName 
NorthWind.ac.uk/Users/Dormant/DifferentArea/Surname, FirstName 

Devo rimuovere Cognome, Nome compreso il /. La stringa dovrebbe apparire così.

NorthWind.ac.uk/Users/Current/IT 

Se qualcuno potesse aiutarmi, sarei molto grato.

Ho provato questo; -replace '([/])$','' ma non riesco a farlo funzionare.

Grazie

risposta

25

Sostituire /[^/]*$ con una stringa vuota

+0

Assolutamente bellissimo. ** - sostituisci '/ [^ /] * $', '' ** –

+0

Puoi spiegarlo per favore? –

+0

Cerca un '/', seguito da zero o più caratteri diversi da un '/', seguito dalla fine della stringa. –

0

controllo questa regex http://regexr.com?2vhll non posso testare su PowerShell ma lavorare nel generatore regex

/(?!.*/).* 
0

Ecco una soluzione che non richiede le espressioni regolari:

PS> $cn = 'NorthWind.ac.uk/Users/Current/IT/Surname, FirstName' -split '/' 
PS> $cn[0..($cn.count-2)] -join '/' 
NorthWind.ac.uk/Users/Current/IT 
0

Questa soluzione non utilizza regex. Credo che questo approccio è probabilmente più facile da capire, dopo tutti espressioni regolari - in generale - sono difficili da leggere:

NorthWind.ac.uk/Users/Current/IT/Surname, FirstName ha una struttura percorso simile (Windows supporta anche la barra come un separatore di percorso), in modo che potessimo usa split-path per restituire il percorso "directory" padre.

Perché '\' è il separatore di percorso predefinito, abbiamo bisogno di sostituire il '\' con '/' dopo aver fatto questo:

(split-path NorthWind.ac.uk/Users/Current/IT/Surname, FirstName).replace('\','/') 
# will return NorthWind.ac.uk/Users/Current/IT 
0

Ecco un'altra soluzione che non richiede le espressioni regolari:

Prendere una sottostringa della stringa a partire dall'inizio della stringa e termina prima che l'indice dell'ultima barra nella stringa:

PS> $indexoflastslash = ("NorthWind.ac.uk/Users/Current/IT/Surname, FirstName").lastindexof('/') 
PS> "NorthWind.ac.uk/Users/Current/IT/Surname, FirstName".substring(0,$indexoflastslash) 
Problemi correlati