2017-06-15 38 views
2

所以,我有以下命令:獲取內容替換滿弦

(Get-Content $path).Replace($current, $new) | Set-Content $path 

它正常工作,改變一個字符串,但可以說我有在$path以下字符串:"This is a test. testing was done."

如果我設置$current"test"$new"Blah"。我會得到"This is a Blah. Blahing was done."

我如何使它只改變"test"而不是"testing"所以我的字符串將是:"This is a blah. testing was done."

回答

2
$path = "This is a test. testing was done." 
$current = "\btest\b" 
$new = "Blah" 
$path -replace ($current, $new) 

\ b是正則表達式字邊界

+0

假設$ current被傳遞給腳本。我如何將「\ b」添加到開始和結束?我試着用「+」和其他一些變體添加它,但它似乎不起作用。 – Paulo

+0

我不太明白 - 你能告訴我代碼嗎? – Itchydon

+0

param( [string] $ path =「」, [string] $ new =「」, [string] $ current =「」) (Get-Content $ path).Replace($ current,$ new) | Set-Content $ path – Paulo

1

而不是使用Replace()方法,請嘗試使用-replace運算符 - 此運算符使用Get-Help about_Regular_Expressions(鏈接到MSDN)中描述的正則表達式。

+1

嗯,你可能已經至少提到'\ B'錨... – wOxxOm

+0

得到心煩意亂,叫走了別的東西 - 我其實是想,' \ W'可能適合OP的需求。對於正則表達式分析,我也有點不穩定,所以本來不會提到任何特定的模式。 –