【问题标题】:notepad++ regex find, replace and KEEP the match [duplicate]notepad++ 正则表达式查找、替换和保持匹配[重复]
【发布时间】:2019-12-21 07:07:47
【问题描述】:

好的,在我得到“已经回答”之前,我已经找到并尝试了我在以下位置找到的所有排列:

While replacing using regex, How to keep a part of matched string?

Using Notepad++ Regex to Find and Replace Only Part of Found Text

我有以下几行:

new MyObject("22222,11,21),
new MyObject("22223,12,22),
new MyObject("22224,13,23),
new MyObject("22225,14,24),

为此,我试图将“结束报价”放在 22222、22223、22224 和 22225 附近:

new MyObject("22222",11,21),
new MyObject("22223",12,22),
new MyObject("22224",13,23),
new MyObject("22225",14,24),

我在 notepad++ 中为“查找内容”输入的值有效(转义的双引号加上 5 位数字)。

\"\d{5}

对于“替换为”(基于我在前两篇 SOF 文章中找到的内容),我尝试过:

(这些只是为了测试它)

aaa$1bbb
aaa$1$2bbb
aaa$1$2$3bbb

aaa\1bbb
aaa\1\2bbb
aaa\1\2\3bbb

显然,我想要的(以及我认为应该起作用的)如下(转义的双引号,然后是“1”的占位符,以及第二个转义的双引号)

\"\1\"\

\"$1\"\

我的搜索模式是“常规快递”,我已经打开和关闭了“.matches newline”。

记事本++ v7.7.1(64 位)

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    这里不需要捕获组,使用以下:

    • Ctrl+H
    • 查找内容:"\d{5}\K
    • 替换为:"
    • 检查环绕
    • 检查正则表达式
    • 全部替换

    说明:

    "           # a double quote
    \d{5}       # 5 digits
    \K          # forget all we have seen until this position
    

    给定示例的结果:

    new MyObject("22222",11,21),
    new MyObject("22223",12,22),
    new MyObject("22224",13,23),
    new MyObject("22225",14,24),
    

    屏幕截图:

    【讨论】:

    • 那是一些魔法师“K”。
    【解决方案2】:

    您需要在捕获组中捕获匹配项:

    (\"\d{5})
    

    用捕获的值和引号替换它:

    \1"
    

    例如

    【讨论】:

    • #jackPot,我会尽快标记为答案。谢谢。我只是在几秒钟内替换了 33,000 行。
    猜你喜欢
    • 2017-01-28
    • 2015-01-11
    • 2012-12-02
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多