Notepad++ 多行正则表达式替换只替换第一行

Notepad++ multi-line regex replacement only replacing first line

我想注释掉大量的多行日志记录语句,用单个正则表达式替换所有操作。

我的[可能]多行语句如下所示:

logger.info( "Log Message: [" + myVariable 
    + "] is has a value of: [" + myVariable.getValue() + " ]"
    + LogColors.ANSI_RESET );

以下正则表达式语句(启用 . 匹配换行符)成功找到(并选择)所有适当的行,直到结束分号。

(logger\..+?\);)

然而,当我尝试将所有内容替换为:

// 

仅替换了我标记的封闭表达式 () 的第一行。所以我留下了这个编译器不友好的多行语句:

// logger.info( "Log Message: [" + myVariable 
    + "] is has a value of: [" + myVariable.getValue() + " ]"
    + LogColors.ANSI_RESET );

如果你能发表像/* sth */这样的评论我会建议:

(?<!/\* )logger\..+?\);(?! \*/)

并替换为:

/* [=11=] */

See the DEMO

与其尝试将所有内容强制放入单行注释,不如尝试将其设为多行。将其替换为 /* */。你的正则表达式是一样的,但它消除了编译器讨厌它的问题。

这样做的另一个好处是可以使代码保持一致,这样当您取消注释时就不会丢失格式(这通常会使代码更易于阅读)。

注意:如果这不是 Java,请将 /* */ 替换为相关的多行。