我需要在powershell中使用正则表达式来按字符串 ## 拆分字符串,并将字符串移到另一个字符(; )。
我有以下字符串。
$temp = "admin@test.com## deliver, expand;user1@test.com## deliver, expand;group1@test.com## deliver, expand;"
现在,我想拆分此字符串并仅将电子邮件ID转换为新的数组对象。我的预期输出应该是这样的。
admin@test.com
user1@test.com
group1@test.com
要获得以上输出,我需要按字符 ## 拆分字符串,然后删除子字符串 - 分号(; )。
有人可以帮我写一个正则表达式查询来实现PowerShell中的这个需求吗?
答案 0 :(得分:4)
如果您希望在方法中使用基于正则表达式的拆分,可以使用##[^;]*;
正则表达式和此代码,该代码也会删除所有空值(使用| ? { $_ }
):
$res = [regex]::Split($temp, '##[^;]*;') | ? { $_ }
##[^;]*;
匹配:
##
- 加倍#
[^;]*
- 除;
;
- 文字;
。请参阅regex demo
答案 1 :(得分:3)
使用[regex]::Matches获取正则表达式的所有匹配项。如果这适合您,您可能不需要首先拆分字符串:
\b\w+@[^#]*
PowerShell代码:
[regex]::Matches($temp, '\b\w+@[^#]*') | ForEach-Object { $_.Groups[0].Value }
<强>输出:强>
admin@test.com
user1@test.com
group1@test.com