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。。你们两个建议对我来说都很有效!非常感谢。