2012-02-16 73 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