【问题标题】:regex preserve whitespace in replace正则表达式在替换中保留空格
【发布时间】:2017-01-05 12:04:43
【问题描述】:

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

    ObjectType=Page
    ObjectID=70000

我的匹配字符串是

RunObjectType=Page;\s+RunObjectID=70000

我想要的结果是

   ObjectType=Page
   ObjectID=88888

问题是我的替换字符串

RunObjectType=Page;`n+RunObjectID=88888

返回

       ObjectType=Page
ObjectID=88888

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

建议?

【问题讨论】:

    标签: regex powershell whitespace


    【解决方案1】:

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

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

    regex demo

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

    【讨论】:

    • 谢谢,我知道它必须很简单,但我看不到。
    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2018-11-19
    • 2010-09-17
    • 2018-09-19
    • 2021-12-18
    • 2015-09-16
    相关资源
    最近更新 更多