2016-10-03 11 views
0

У меня есть php-файл, открытый в редакторе, например, Geany/Notepad ++, который имеет как тип комментариев, так и блок-комментарии.Как удалить все однострочные строки комментариев PHP через Regex в любом редакторе

Теперь, когда комментарии к блоку полезны для документации, я хочу только удалить однострочные комментарии, начиная с //~ или #. Другие комментарии, начиная с //, должны оставаться, если они не начинаются с //.

Как я могу это сделать в regex, я попробовал это ниже, но застрял в избегающем косе, а также в том числе #.

^[#][\/]{2}[~].* 

Любой может помочь?

ответ

2

Проблема с регулярным выражением ^[#][\/]{2}[~].* заключается в том, что она соответствует строке, начинающейся с #//~.

Регулярное выражение такой же, как

^#\/\/~.* 

Используйте регулярное выражение

^\s*(\/\/|#).* 

Demo

Описание:

Однострочные комментарии могут начинаться в начале строки или после нескольких пробелов (отступ).

  1. ^: Начало линии
  2. \s*: любое количество пробелов
  3. (\/\/|#): Матч // или # символов. | есть ИЛИ в регулярном выражении.
  4. .*: любые символы (кроме символа новой строки) любое количество раз

Обратите внимание, что PHP comments не содержит тильда ~ после //. Даже если ~ присутствует после //, поскольку указанное выше регулярное выражение проверяет // и не заботится о символах после него, комментарий с //~ также будет соответствовать.

+0

Что заставляет вас думать, что комментарии не содержат '~'? –

+0

@u_mulder Я вижу это в [official doc] (http://php.net/manual/en/language.basic-syntax.comments.php) и не нашел этого синтаксиса. – Tushar

+0

В Geany, когда применяется комментарий short-cut (Ctrl + E), применяемые комментарии содержат '// ~' –

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

  • Нет связанных вопросов^_^