正则表达式保留替换的空格

时间:2017-01-05 12:04:44

标签: regex powershell whitespace

使用REGEX(在PowerShell中)我想在文本文件中找到一个超过两行的模式,并用新文本替换它并保留空白。示例文本:

    ObjectType=Page
    ObjectID=70000

我的匹配字符串是

RunObjectType=Page;\s+RunObjectID=70000

我想要的结果是

   ObjectType=Page
   ObjectID=88888

问题是我的替换字符串

RunObjectType=Page;`n+RunObjectID=88888

返回

       ObjectType=Page
ObjectID=88888

我需要它来保持原始间距。更复杂的是,间距的数量可能会发生变化。

建议?

1 个答案:

答案 0 :(得分:1)

在替换模式中利用捕获组和对该组的反向引用:

$s -replace 'RunObjectType=Page;(\s+)RunObjectID=70000', 'RunObjectType=Page;$1RunObjectID=88888'

请参阅regex demo

使用(\s+),您捕获所有空格到组1缓冲区中,然后使用$1反向引用将值插入到结果中。

enter image description here