Regex '-更换';变量的各个部分';s输出,仅匹配整个单词和单词

Regex '-更换';变量的各个部分';s输出,仅匹配整个单词和单词,regex,powershell,scripting,Regex,Powershell,Scripting,我这里有一句话: Foreach ($Report in $ReportToGroup -replace xxxx { 并返回以下内容: WARNING: @{name=Report to firstname.lastname} removed 我试图排除@{name=},虽然我可以用 -replace '[@{=}]','' 然而,我一直不知道如何删除“name”这个词。如果我尝试以下方法: -replace '[@{name=}]','' 它还会删除这些字母的其他实例。。是否有

我这里有一句话:

 Foreach ($Report in $ReportToGroup -replace xxxx { 
并返回以下内容:

 WARNING: @{name=Report to firstname.lastname} removed
我试图排除@{name=},虽然我可以用

-replace '[@{=}]',''
然而,我一直不知道如何删除“name”这个词。如果我尝试以下方法:

-replace '[@{name=}]',''

它还会删除这些字母的其他实例。。是否有一种方法可以匹配整个单词,但不包括单数出现的字母?

不清楚您的问题是什么-您这里有几个问题可能需要单独提问

至少对于正则表达式,如果搜索字母序列,不要将单词放在方括号中。[名称]指任何字母n、a、m、e

范例-

$InputString = 'WARNING: @{name=Report to firstname.lastname} removed' 
$InputString -replace '@{name=|}',''
返回

WARNING: Report to firstname.lastname removed

听起来不清楚。要删除单词
名称
@
,或
=
,或
{
}
,您需要使用
-replace'name{=}'
-replace'\bname\b{=}'
。要删除
{@name=
}
您可以使用
-replace'{name=([^{}]*)}','$1'
您最初是如何获得输入字符串的?听起来您的脚本前面缺少了一个
.Name
引用。这看起来像是
|Select Object-Property Name
语句的输出,已转换为字符串。如果是这种情况,请使用
-ExpandProperty
开关仅输出属性值,而不输出周围的对象:
|选择object-ExpandProperty Name
。我不确定您真正的意思,但我想指出,您需要删除方括号[]。有了它们,正则表达式将匹配括号内出现的任何单个字符。如果您查找的是整个序列而不是单个字符,只需删除这些括号,使用将忽略单个字符但与整个表达式匹配的@{name=},记住,
@{name=}
将替换
}
任何位置,而不仅仅是在
@{name=…}
substring。实际上,你们两个回答得很好。猫头鹰和zett42。。你们两个建议对我来说都很有效!非常感谢。