使用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”?
答案 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'
两者都相似,只是第二个使用命名组。
我不确定你要做什么(这个例子似乎已经熟了)但是必须有更简单的方法来做你想做的事情,你也可以利用
$`
和
$'
分别表示比赛前后的部分。