Regex 记事本++多行正则表达式替换仅替换第一行
我想用一个regex replace all操作注释掉大量多行日志语句 我的[可能]多行语句如下所示:Regex 记事本++多行正则表达式替换仅替换第一行,regex,notepad++,multiline,Regex,Notepad++,Multiline,我想用一个regex replace all操作注释掉大量多行日志语句 我的[可能]多行语句如下所示: 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 );
下面的正则表达式语句带有。匹配启用的换行符成功查找并选择所有适当的行,直到结束分号
(logger\..+?\);)
但是,当我尝试用以下内容替换所有内容时:
// \1
仅替换带标记的封闭表达式的第一行。所以我只剩下这个编译器不友好的多行语句:
// logger.info( "Log Message: [" + myVariable
+ "] is has a value of: [" + myVariable.getValue() + " ]"
+ LogColors.ANSI_RESET );
如果你能做出像/*sth*/这样的评论,我建议:
(?<!/\* )logger\..+?\);(?! \*/)
如果你能做出像/*sth*/这样的评论,我建议:
(?<!/\* )logger\..+?\);(?! \*/)
不要试图将所有内容强制放在一行注释中,而是尝试使其成为多行注释。将其替换为/*\1*/。您的正则表达式是相同的,但它消除了编译器讨厌它的问题 这还有保持代码相同的优点,这样在取消注释时不会丢失格式,这通常会使代码更易于阅读
注意:如果这不是Java,请将/**/替换为相关的多行注释。与其将所有内容强制编入单行注释,不如将其改为多行注释。将其替换为/*\1*/。您的正则表达式是相同的,但它消除了编译器讨厌它的问题 这还有保持代码相同的优点,这样在取消注释时不会丢失格式,这通常会使代码更易于阅读
注意:如果这不是Java,请将/**/替换为相关的多行。这很聪明。但是他的语言必须支持它。@AmitJoki我很有信心这种语言是Java,所以它可能会工作。这种语言是Java!我甚至没有想过使用多行注释。这种方法将使反向操作更容易,同时也可以取消日志记录语句的注释。但是他的语言必须支持它。@AmitJoki我很有信心这种语言是Java,所以它可能会工作。这种语言是Java!我甚至没有想过使用多行注释。这种方法将使反向操作更容易,同时也可以取消对日志语句的注释。