正则表达式在替换中保留空格

regex preserve whitespace in replace

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

    ObjectType=Page
    ObjectID=70000

我的匹配字符串是

RunObjectType=Page;\s+RunObjectID=70000

我想要的结果是

   ObjectType=Page
   ObjectID=88888

问题是我的替换字符串

RunObjectType=Page;`n+RunObjectID=88888

returns

       ObjectType=Page
ObjectID=88888

而且我需要它来保持原来的间距。更复杂的是间距的数量可能会改变。

建议?

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

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

regex demo

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