PowerShell中如何在字符串替换中使用通配符?代码问题求助
问题原因
你用的$file.Replace()是.NET字符串的内置方法,它只支持精确子串匹配,不识别PowerShell的通配符(*)。你传入的"w*t"会被当成完整的字面量去查找,原字符串里根本没有这个子串,所以替换完全没生效。
解决方法
用PowerShell原生的-replace运算符,它支持正则表达式,能实现你要的通配符式匹配需求:
如果是要替换所有以w开头、t结尾的完整单词(比如你的例子里的want),可以这么写:
$file = "want apple banana want want" $file -replace '\bw\w*t\b', 'wanna'
如果你的需求就是精准替换want为wanna,直接写更简单:
$file -replace 'want', 'wanna'
补充说明:正则里的\b是单词边界,避免匹配到包含want的更长单词;\w*用来匹配w和t之间的任意字母/数字/下划线,对应你想用*通配符匹配中间内容的逻辑。
内容的提问来源于stack exchange,提问作者ziye huang
相关产品推荐
相关产品推荐

