如何替换字符串中最后出现的子字符串?

最佳答案

正则表达式也可以执行此任务。这是一个可行的例子。它将用“大黄蜂乔”代替最后一次出现的“水瓶座”

$text = "This is the dawning of the age of Aquarius. The age of Aquarius, Aquarius, Aquarius, Aquarius, Aquarius"
$text -replace "(.*)Aquarius(.*)", '$1Bumblebee Joe$2'
This is the dawning of the age of Aquarius. The age of Aquarius, Aquarius, Aquarius, Aquarius, Bumblebee Joe

贪婪的量词可确保它占用所有可能的内容,直到Aquarius的最后一个匹配项为止。 $1$2表示匹配之前和之后的数据。

如果您使用变量进行替换,则需要使用双引号并将转义符替换为$,因此PowerShell不会尝试将它们视为变量
$replace = "Bumblebee Joe"
$text -replace "(.*)Aquarius(.*)", "`$1$replace`$2"

10-07 20:32