在Powershell中插入数字替换

时间:2012-02-16 06:14:19

标签: regex 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”?

2 个答案:

答案 0 :(得分:5)

使用以下语法:${1}66$2

输出:

'   First part: 66 Second Part'

答案 1 :(得分:2)

你可以这样做:

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

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

两者都相似,只是第二个使用命名组。

我不确定你要做什么(这个例子似乎已经熟了)但是必须有更简单的方法来做你想做的事情,你也可以利用

$`

$'

分别表示比赛前后的部分。