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

时间:2015-03-05 13:27:12

标签: regex notepad++ multiline

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

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

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

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

(logger\..+?\);)

然而,当我尝试用以下内容替换所有:

// \1

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

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

2 个答案:

答案 0 :(得分:5)

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

这也具有保持代码相同的优点,因此当您取消注释它时,您不会丢失格式(这通常会使代码更易于阅读)。

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

答案 1 :(得分:0)

如果您可以发表评论,例如/ * sth * /我会建议:

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

并替换为:

/* $0 */

See the DEMO

相关问题