Regex 正则表达式忽略第五次出现'\';反斜杠
我一直在尝试编写一个正则表达式,它忽略第五次出现反斜杠后的所有文本,例如在文本下面;所讨论的语言是powershellRegex 正则表达式忽略第五次出现'\';反斜杠,regex,windows,powershell,Regex,Windows,Powershell,我一直在尝试编写一个正则表达式,它忽略第五次出现反斜杠后的所有文本,例如在文本下面;所讨论的语言是powershell \\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2 我做了多次尝试,但都没有成功,我所能做的就是使用([^\$]*$)匹配发布usershare$后的所有内容,这给了我\\Fileserver\usershare$ 我希望输出为\\Fileserver\Usershare$\svr2008 任何帮助都将不胜感激 根据
\\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
但是我需要不匹配的部分,我做错了什么吗?试试这个(假设有5个以上的反斜杠)
相配
\\Fileserver\Usershare$\Svr2008\
中的\\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2
在执行
\\\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2'-matches'^\\\([^\\]*\\){3}'
之后,您所需的字符串将位于$matches[0]
以下是完成此任务的另一种方法。[咧嘴笑]
它的作用
- 将路径放在$Var中
- 在
字符上拆分\
- 获取前五个结果项
- 用
\
$Test = '\\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2'
$Test.Split('\')[0..4] -join '\'
output=
\\Fileserver\Usershare$\Svr2008
正则表达式不“输出”任何内容。这是一个模式匹配工具。您可以使用它来用某种模式替换匹配的子字符串。这就是您想要的:用空字符串替换第五个反斜杠之后的任何内容?是的,我正在使用powershell post Match中的replace函数这里有一个非正则表达式解决方案:。根据您的脚本,最好首先使用Get ChildItem-Path x-Depth 4来获取您需要的项目,例如,您是否真的只需要路径-删除文件名?@Lee_Dailey:不,我实际上需要带有文件名的路径以及删除文件的父目录,这很有魅力!但是,当我替换它时,它会删除我需要的部分,因此$test=$parent-replace'^\\\([^\]*\){3}将输出为Profiles\john.contoso.V2。我编辑了一些其他信息,您所需的字符串将以$matches[0]形式出现
$Test = '\\Fileserver\Usershare$\Svr2008\Profiles\john.contoso.V2'
$Test.Split('\')[0..4] -join '\'