正则表达式按字符串中的位置替换字符串中的特定字符?

时间:2018-03-25 22:47:27

标签: regex powershell

我正在尝试将Zone version: 2017102102替换为Zone version: 2018032501。我遇到的问题是数字部分不一致,但字符串长度和格式始终为Zone Version: NNNNNNNNNN。怎么说"用2018032501替换字符16-25"在powershell?

我熟悉基本的替换操作。我只需要知道如何告诉-replace操作只改变字符串中的那些特定字符。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式匹配10位数字并替换它们。

"Zone version: 2017102102" -replace "(\d{10})",2018032501

答案 1 :(得分:1)

在Powershell中可以使用一些选项来执行字符串操作。对于您的任务,我基本上看到了两种稍微简单的方法来实现您的需求。

$OriginalString = 'Zone version:  2017102102'
$NewString = '2018032501'

使用-replace运算符

$OriginalString -replace 'Zone\sversion:\s+\d{10}',"Zone version:  $NewString"

或使用子串。

$OriginalString.Substring(0,15) + $NewString