2016-03-10 4 views
1

Невозможно найти какой-либо используемый пример RegExp для соответствия всем блокам комментариев jsDoc в текстовом файле.RegEx для комментариев jsDoc

В принципе, он должен найти все блоки, которые удовлетворяют следующие правила:

  • начинается с /**, а затем еще на одну или разрывы строки
  • Заканчивается */
  • В блоке может быть все, включая примеры кода и HTML.

Я попробовал код из jsdoc-regex, но это не сработало:

/[^\S\r\n]*\/(?:\*{2})([\W\w]+?)\*\/([\W\w]+?)?(?=\s+\/\*{1,2}|$)/g; 

Примечание:

Я разборе общие текстовые файлы, не обязательно JavaScript, поэтому я могу» t используйте JS-парсеры, такие как Esprima.

UPDATE:

Перефразируя мой вопрос, я застрял, пытаясь определить правило регулярное выражение, которое говорит выражение должно заканчиваться */, в то время как там может быть что-либо до него (в пределах блока), т.е. что-либо в этом случае означает что-либо, кроме */.

РЕШЕНИЕ:

Благодаря вам ответ на @ m93a, его реализация стала ценным дополнением к decomment, вариант ignore.

+0

Вы могли бы использовать парсер js, как esprisima? –

+0

@ DanielA.White нет, я не могу использовать дополнительные парсеры для этого, я могу использовать только RegExp в моем примере, который является общим и может эффективно соответствовать чему угодно. jsDoc - всего лишь один пример, с которым я столкнулся. –

+0

Можете ли вы рассказать нам немного больше о том, что вы пробовали? Кажется, вы надеетесь, что кто-то просто даст вам ответ, а не попытается изучить RegExp и попытаться реализовать свои собственные. Это не тот сайт, о котором идет речь. –

ответ

4

Постройте выражение: Учебник

  1. / / - пустое выражение
  2. /\/\*\*/ - матч /** (бежал)
  3. /\/\*\*\s*\n/ - с последующим разрывом строки (пробел символы могут быть prece динь)
  4. /\/\*\*\s*\n\*\// - матч */ (бежал)
  5. /\/\*\*\s*\n[^\*]\*\// - ничего, кроме *
  6. /\/\*\*\s*\n[^\*]*\*\// - может повторять любое количество раз
  7. /\/\*\*\s*\n[^\*]*()?\*\// - следует факультативному группу
  8. /\/\*\*\s*\n[^\*]*(\*[^\/])?\*\// - * с последующим любым другим полукоксом, чем /
  9. /\/\*\*\s*\n([^\*]*(\*[^\/])?)*\*\// - все это может повториться
  10. /\/\*\*\s*\n([^\*]*(\*[^\/])?)*\*\// - Tadaa! Красивая, не так ли?
+1

Как насчет первого требования, в котором говорится: '..., за которым следует один или несколько разрывов строк? –

+0

@ vitaly-t Хороший момент, не прочитал вопрос правильно. Исправлено. – m93a

+1

Благодаря этому вы сделали ценное дополнение к [разложению] (https://github.com/vitaly-t/decomment), опцию [ignore] (https: // github.ком/виталий-т/decomment # optionsignore - регулярное выражение - регулярное выражение). –

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