Notepad ++如果行包含则如何替换结尾

问题描述

我真的需要您的帮助! 这是我目前的情况:

如果一行包含“ Menu :: choose”

Menu::choose("Invisible",invis);
Menu::choose("Never Wanted",neverw);

我需要Notepad ++将结尾“);”替换为“,true);” 所以看起来像这样:

Menu::choose("Godmode",godmode,true);
Menu::choose("No Ragdoll",rag,true);

有办法吗?

解决方法

在“替换”对话框中,您需要输入以下内容:

  • 在“查找内容:”框中,您可以输入:

      Menu::choose\((.*)\);
    
  • 在“替换为:”框中,您可以输入:

      Menu::choose\(\1,true\);
    
  • 然后在底部选中“正则表达式”位

然后,当您单击“全部替换”时,它将匹配与“查找内容:”正则表达式匹配的行,并将其替换为“替换为:”(包括额外的“ true”参数)。

在正则表达式中:

  • 字符()很特殊,因此需要在带有\(\)的正则表达式中转义

  • ()表示一个捕获组,该捕获组会将内部的任何匹配项分配给\1

  • .*匹配任意数量的字符。

因此Menu::choose\((.*)\);将匹配:

  • Menu::choose(
  • 任意数量的字符(已分配给\1
  • );

然后Menu::choose\(\1,true\);替换为:

  • Menu::choose(
  • 所有分配给\1的字符
  • ,true);
,
  • Ctrl + H
  • 查找内容:Menu::choose\([^)]+\K
  • 替换为:,true
  • 检查 匹配案例
  • 检查 环绕
  • 检查 正则表达式
  • 全部替换

说明:

Menu::choose    # literally
\(              # open parenthese,have to be escaped as it has special meaning in regex
[^)]+           # negative character class,1 or more NON close parenthesis
\K              # forget all we have seen until this position

屏幕截图(之前):

enter image description here

屏幕截图(之后):

enter image description here