Powershell仅替换完全匹配的字符串

时间:2019-09-09 19:02:09

标签: regex powershell replace

我想用replace代替确切的单词,但我似乎不明白。

$value1 = "I brought tea for my team"

$newValue = "coffee"
$token = "tea"

$value1 -replace $token, $newValue

实际结果:

  

我把咖啡拿来当咖啡

预期结果:

  

我为团队带来了咖啡

修复:

$value1 = "I brought tea for my team"

$newValue = "coffee"
$token = "tea"

$value1 -replace "\b$token\b", $newValue

3 个答案:

答案 0 :(得分:2)

@Theo是正确的。您可以使用正则表达式和单词边界\b来包装搜索词以仅匹配整个单词。

$value1 = "I brought tea for my team"

$newValue = "coffee"
$token = "tea"

$value1 -replace "\b$token\b", $newValue

答案 1 :(得分:1)

就像提奥在评论中提到的那样...

λ  $value1 = "I brought tea for my team"
λ  $newValue = "coffee"
λ  $token = "tea"
λ  $value1 -replace $token, $newValue
I brought coffee for my coffeem

λ  $value1 -replace "\b$token\b", $newValue
I brought coffee for my team

您需要设置边界。即使您不是城市。

答案 2 :(得分:0)

您可以使用以下内容:

$token = " tea "
$newValue = " coffee "