我试图在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 '([/])$',''
但我似乎无法让它发挥作用。
由于
答案 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)