notepad ++正则表达式查找,替换并保留匹配项

时间:2019-08-14 17:36:53

标签: regex notepad++

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

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),

我在记事本++中为“查找内容”输入的值有效(转义的双引号加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”。

  

Notepad ++ v7.7.1(64位)

2 个答案:

答案 0 :(得分:2)

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

  • 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),

屏幕截图:

enter image description here

答案 1 :(得分:1)

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

(\"\d{5})

将其替换为捕获的值和引号:

\1"

例如

enter image description here