我有多个字符串。它们将类似于
DEVSRC\2019\REL\19-REL-07\Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile\App_Themes\Bundles
和
DEVSRC\2019\REL\19-REL-07\Policy\XPM\Insured\company.PolicyManagement.WebSite.Customer.Components\content
在powershell中,我需要从一开始就删除“ DEVSRC\2019\REL\19-REL-07\
”
和
“公司。?。?。?”之后的所有内容
我刚接触Power Shell,已经尝试了几天
我尝试过修剪,子串等,但注意到似乎可行。
输出应为
$mystring = "Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile"
或
mystring = "Policy\XPM\Insured\company.PolicyManagement.WebSite.Customer.Components"
答案 0 :(得分:1)
如果\
个字符的数量是可以预见的,则可以使用-Split
和-Join
使其更加整洁。
$s = "DEVSRC\2019\REL\19-REL07\Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile\App_Themes\Bundles"
($s -split "\\")[4..6] -join '\'
答案 1 :(得分:1)
这使用命名的捕获组和惰性捕获,该捕获在\
之后的第一个\companies.
之前停止,以获取文本的所需部分。这是脆弱,它取决于非常特定的模式,但是您的两个样本适合该模式。 [咧嘴]
$InStuff = @'
DEVSRC\2019\REL\19-REL-07\Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile\App_Themes\Bundles
DEVSRC\2019\REL\19-REL-07\Policy\XPM\Insured\company.PolicyManagement.WebSite.Customer.Components\content
'@ -split [System.Environment]::NewLine
foreach ($IS_Item in $InStuff)
{
$Null = $IS_Item.Replace('DEVSRC\2019\REL\19-REL-07\', '') -match '(?<Wanted>.+\\company.+?)\\.+'
$Matches.Wanted
}
输出...
Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile
Policy\XPM\Insured\company.PolicyManagement.WebSite.Customer.Components