【发布时间】:2019-12-02 20:13:28
【问题描述】:
我一直在尝试编写一个正则表达式,它忽略第五次出现反斜杠后的所有文本,例如文本下方;有问题的语言是powershell
\\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2
我进行了多次尝试但无济于事,我能做的最好的事情就是匹配 usershare$ 后的所有内容,使用([^\$]*$),这给了我\\Fileserver\Usershare$
我希望输出为\\Fileserver\Usershare$\svr2008
任何帮助将不胜感激。
按照 Mik 的建议,我尝试了 ^\\\\([^\\]*\\){3} 并将其用作
$Parent= \\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2
$test = $parent -replace '^\\\\([^\\]*\\){3}'
$test
我得到下面的
Svr2008\Profiles\john.contoso.V2
但是我需要不匹配的部分,我做错了吗?
【问题讨论】:
-
正则表达式不会“输出”任何东西。它是一个模式匹配工具。您可以使用它用某种模式替换匹配的子字符串。这就是你想要的:用空字符串替换第五个反斜杠之后的任何内容?
-
是的,我在powershell post match中使用了replace功能
-
这里有一个非正则表达式解决方案:stackoverflow.com/questions/55029472/…。根据您的脚本,最好只使用例如获取您需要的项目。 Get-ChildItem -Path x -Depth 4
-
您真的只想要路径 - 删除了文件名吗?
-
@Lee_Dailey:不,我实际上需要文件名的路径以及文件的父目录已删除
标签: regex windows powershell