Regex 修剪或替换PowerShell字符串变量

Regex 修剪或替换PowerShell字符串变量,regex,powershell,sharepoint,office365,trim,Regex,Powershell,Sharepoint,Office365,Trim,我有一个字符串变量,它保存以下信息 @{EmailAddress=test1@tenant.onmicrosoft.com},@{电子邮件地址=test2@tenant.onmicrosoft.com} 我将此变量用于仅接受以下格式数据的cmdlet test1@tenant.onmicrosoft.com, test2@tenant.onmicrosoft.com 我尝试了TrimStart(“@{EmailAddress=”),但这只会删除第一个用户的{EmailAddress=,我想Tri

我有一个字符串变量,它保存以下信息

@{EmailAddress=test1@tenant.onmicrosoft.com},@{电子邮件地址=test2@tenant.onmicrosoft.com}

我将此变量用于仅接受以下格式数据的cmdlet

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

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


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

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

$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=([^}]+)}.*?', '$1'
用于替换的正则表达式:


谢谢Martin,图表帮助我理解了-非常感谢Hi Martin,很抱歉将球门柱移到这里,但是是否有一个选项可以为每个用户添加双引号,例如“test1@tenant.onmicrosoft.com", "test2@tenant.onmicrosoft.com"-我理解这可能是一个完全不同的问题,需要不同的回答,但我想我会先在这里提问。谢谢,用
“$1”
替换
“$1”