正则表达式,删除最后一次正斜杠后的所有内容

时间:2011-12-21 12:47:25

标签: regex powershell

我试图在PowerShell中使用正则表达式删除此字符串中最后一个斜杠的所有内容;

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

我需要删除Surname,FirstName包括/。 字符串应如下所示。

 NorthWind.ac.uk/Users/Current/IT

如果有人可以帮助我,我将非常感激。

我试过这个; -replace '([/])$',''但我似乎无法让它发挥作用。

由于

5 个答案:

答案 0 :(得分:33)

/[^/]*$替换为空字符串

答案 1 :(得分:2)

检查此正则表达式http://regexr.com?2vhll 我无法在powershell上测试它,但它在正则表达式生成器中工作

/(?!.*/).*

答案 2 :(得分:0)

这是一个不需要正则表达式的解决方案:

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

答案 3 :(得分:0)

此解决方案不使用正则表达式。 我相信这种方法可能更容易理解,毕竟正常情况下的正则表达式很难理解:

NorthWind.ac.uk/Users/Current/IT/Surname, FirstName具有类似路径的结构(windows也支持正斜杠作为路径分隔符),因此我们可以使用split-path返回父“目录”路径。

因为'\'是默认路径分隔符,所以我们需要在执行此操作后将'\'替换为'/':

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

答案 4 :(得分:0)

这是另一种不需要正则表达式的解决方案:

从字符串的开头开始,并在字符串中最后一个斜杠的索引之前结束字符串的子字符串:

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