2015-03-05 2 views
1

Я хочу прокомментировать большое количество операторов многострочного ведения журнала с одним регулярным выражением, чтобы заменить всю операцию.Notepad ++ многострочная замена регулярного выражения заменяет только первую строку

Мои [потенциально] заявления многострочного выглядеть следующим образом:

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

ответ

5

Вместо того чтобы пытаться заставить все в однострочном комментарии, попробуйте делая его многострочным. Замените его на /* \1 */. Ваше регулярное выражение такое же, но оно устраняет проблему компиляторов, ненавидящих его.

Это также имеет то преимущество, что код идентичен, поэтому, когда вы раскомментируете его, вы не теряете форматирование (что часто делает код более легким для чтения).

Примечание: Если это не Java, замените /* */ на соответствующую многострочную линию.

+2

это умный. Но его язык должен его поддерживать. –

+0

@AmitJoki Я довольно уверен, что язык Java, поэтому он, вероятно, сработает. –

+0

Хорошо. Я поддержал это. Я не был уверен, что это была java. –

0

Если вы можете сделать комментарий, как/* STH */Я хотел бы предложить:

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

и заменить:

/* $0 */ 

See the DEMO

Смежные вопросы