2017-04-24 53 views
1

我有保持以下信息修剪或替換的PowerShell字符串變量

@ {[email protected]},@ {[email protected]字符串變量}

我使用該變量對於只在

[email protected]的格式接收數據小命令icrosoft.com,[email protected]

我已經試過TrimStart("@{EmailAddress=")但這只是消除@{EmailAddress=第一個用戶,我想TrimEnd也不會有多大作爲我相信,這是由於這樣的事實它讀取字符串爲一行,而不是用戶1,用戶2等。

任何人都可以提供有關如何刪除這些不需要的字符的建議。

回答

2

另一種解決方案是使用-replace函數。這僅僅是一個班輪:

'@{[email protected]},@{[email protected]}' -replace '@{EmailAddress=([^}]+)}.*?', '$1' 

正則表達式來代替:

enter image description here

+0

感謝馬丁,圖幫助我理解 - 非常感謝 –

+0

您好馬丁,對不起,在這裏移動球門柱,但是有一個選項可以爲每個用戶添加雙引號,例如「[email protected]」, 「[email protected]」 - 我讚賞這可能是一個完全不同的問題,需要不同的迴應,但我想先在這裏問。謝謝 –

+1

當然,只需用''「$ 1替換'$ 1''''' –

2

一個可能的解決方案是使用正則表達式來提取所需的字符串,並將它們組合成一個結果:然後

$str = "@{[email protected]},@{[email protected]}" 
$pattern = [regex]'@{EmailAddress=(.+?)}' 
$result = ($pattern.Matches($str) | % {$_.groups[1].value}) -join ',' 

$結果是:

[email protected],[email protected] 
+0

謝謝米奇,這是一個很好的解決方案。 –