Trim 或替换 PowerShell 字符串变量

Trim or replace PowerShell string variable

我有一个包含以下信息的字符串变量

@{EmailAddress=test1@tenant.onmicrosoft.com},@{EmailAddress=test2@tenant.onmicrosoft.com}

我将此变量用于仅接受

格式数据的 cmdlet

test1@tenant.onmicrosoft.com, test2@tenant.onmicrosoft.com

我试过 TrimStart("@{EmailAddress=") 但这只会为第一个用户删除 @{EmailAddress= 我想 TrimEnd 不会有太大用处,因为我认为这是因为它将字符串作为一行读取,而不是作为 user1、user2 等读取。

谁能提供有关如何删除这些不需要的字符的建议。

一种可能的解决方案是使用 Regex 提取所需的字符串,并将它们组合成一个结果:

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

$结果是:

test1@tenant.onmicrosoft.com,test2@tenant.onmicrosoft.com

另一个解决方案是使用 -replace 函数。这只是一行:

'@{EmailAddress=test1@tenant.onmicrosoft.com},@{EmailAddress=test2@tenant.onmicrosoft.com}' -replace '@{EmailAddress=([^}]+)}.*?', ''

用于替换的正则表达式: