Включение * / в комментарий блока в стиле C - PullRequest
4 голосов
/ 14 мая 2009

Есть ли способ включить * / в блочный комментарий в стиле C? Изменение блочного комментария на серию строчных комментариев (//) в этом случае не подходит.

Вот пример комментариев, вызывающих проблему:

/**
 * perl -pe 's/(?<=.{6}).*//g' : Limit to PID
 */

Ответы [ 5 ]

24 голосов
/ 14 мая 2009

Обычно комментарии не обязательно должны быть буквальными, поэтому это не часто встречается.

Вы можете обернуть все это в блок #if:

#if 0
whatever you want can go here, comments or not
#endif
10 голосов
/ 14 мая 2009

Неа! Там нет.

3 голосов
/ 14 мая 2009

Вы можете обойти проблему, изменив свое регулярное выражение, чтобы не включать оскорбительную последовательность символов. Судя по тому, что вы делаете, это должно работать (сделайте * не жадным):

/**
 * perl -pe 's/(?<=.{6}).*?//g' : Limit to PID
 */
2 голосов
/ 14 мая 2009

В общем случае вы не можете.

Вот хитрый ответ, который срабатывает в этом случае:

/**
 * perl -pe 's/(?<=.{6}).* //gx' : Limit to PID
 */

Это (или должно быть, я не проверял команду perl) регулярное выражение, совпадающее с оригиналом, поскольку модификатор x позволяет использовать пробел для ясности в выражении, что позволяет * быть отделенным от /.

Вы можете использовать больше пробелов, я включил только один пробел, который разрывает маркер конца комментария.

Некоторые компиляторы поддерживают опцию включения нестандартной функции разрешения вложенных комментариев. Обычно это плохая идея, но в этом конкретном случае вы также можете сделать

/** 
 * /* perl -pe 's/(?<=.{6}).*//g' : Limit to PID
 */

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

0 голосов
/ 14 мая 2009

В этом конкретном случае вы можете изменить разделитель в своем регулярном выражении perl. Вы можете использовать любой не буквенно-цифровой разделитель без пробелов. Здесь я перешел на #:

/** 
 * perl -pe 's#(?<=.{6}).*##g' : Limit to PID
 */

Обычные варианты: # и %.

«Символы в скобках», такие как скобки или скобки, получают немного другой синтаксис, поскольку ожидается, что они будут соответствовать парам:

/** 
 * perl -pe 's[(?<=.{6}).*][]g' : Limit to PID
 */
...