2012-02-16 67 views
2

使用PowerShell我想用另一個數字替換字符串的特定數字部分。PowerShell中的插入號碼替換

最好用一個例子來描述這個問題。

$s = ' First part: 65 Second Part' 

################################################################### 
# this generates "  First part: sixty-six Second Part"  # 
################################################################### 
$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '$1sixty-six$2' 

################################################################### 
# But I want to generate" First part: 66 Second Part"   # 
################################################################### 
$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '$166$2' 

它不起作用。

如何指定「$ 1後跟66號」而不是「$ 166」?

回答

5

使用此語法:${1}66$2

輸出:

' First part: 66 Second Part' 
2

你可以這樣做:

$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '${1}66$2' 

$s -replace '^(?<first>\s*First part:\s+)[0-9]+(.*)$', '${first}66$1' 

兩者是相似的,不同之處在於第二一個使用一個命名組。

我不知道你正在嘗試做的(例子似乎熟了),但必須有你想要的東西更簡單的方法,你也可以利用

$` 

$' 

分別表示比賽前後的部分。

+0

在字符串字面值反引號應該不存在... – 2012-02-16 06:33:07

+1

@AndyArismendi - 是的,謝謝。噓,你怎麼回答這麼快:)我認爲還沒有其他答案。 – manojlds 2012-02-16 06:34:21