Как извлечь подстроку в Powershell - PullRequest
0 голосов
/ 10 июня 2019

У меня есть несколько строк.Они будут похожи на

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 и пытался пару дней

Я пробовал обрезку, подстроку и т. Д., Но, похоже, замечание работает.

outputдолжно быть

$mystring = "Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile"

или

mystring = "Policy\XPM\Insured\company.PolicyManagement.WebSite.Customer.Components"

Ответы [ 2 ]

1 голос
/ 10 июня 2019

это использует именованную группу захвата и ленивый захват, который останавливается до 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
1 голос
/ 10 июня 2019

Если количество \ символов предсказуемо, вы можете использовать -Split и -Join, чтобы сделать это намного чище.

$s = "DEVSRC\2019\REL\19-REL07\Sales\CustomerFlow\company.Presales.CustomerFlow.Web.UI.CustomerMobile\App_Themes\Bundles"
($s -split "\\")[4..6] -join '\'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...