PowerShell含双引号字符串匹配失败,求解决方案
PowerShell匹配含转义双引号字符串的解决方法
问题根源
你代码里的"是HTML实体转义的双引号,在PowerShell中直接赋值后会作为普通字符串存在。原代码的字符串拼接方式虽然逻辑没问题,但PowerShell中直接在双引号字符串里嵌入变量的写法更可靠,也能避免拼接时的潜在错误。
可行解决方案
方案1:修正-like的变量嵌入方式
直接在通配符字符串里嵌入变量,替代手动拼接:
$inputStr = '{"to":"[Email]","from":"no-reply@email.com","cc":"","bc":""' $emailStr = '"[Email]"' if ($inputStr -like "*$emailStr*") { write-host "exists" }
方案2:使用正则表达式匹配(更灵活)
如果需要应对更复杂的匹配场景,推荐使用-match运算符:
$inputStr = '{"to":"[Email]","from":"no-reply@email.com","cc":"","bc":""' # 正则中[和]是特殊字符,需用\转义 if ($inputStr -match '"\[Email\]"') { write-host "exists" }
方案3:若目标是匹配真实双引号(而非")
如果你的原始内容本应是带真实双引号的JSON,只是被转成了HTML实体,可以先替换再匹配:
$inputStr = '{"to":"[Email]","from":"no-reply@email.com","cc":"","bc":""' # 将HTML转义的双引号替换为真实双引号 $processedStr = $inputStr -replace '"', '"' $emailStr = '"[Email]"' if ($processedStr -like "*$emailStr*") { write-host "exists" }
内容的提问来源于stack exchange,提问作者Owais Ahmed
相关产品推荐
相关产品推荐

