RegEx for jsDoc评论

时间:2016-03-10 00:09:06

标签: javascript regex jsdoc

找不到任何可用的RegExp示例来匹配文本文件中的所有jsDoc注释块。

基本上,它需要找到满足以下规则的所有块:

  • /**开头,然后是一个或多个换行符
  • */
  • 结束
  • 在块中可以有任何内容,包括代码示例和HTML。

我尝试了jsdoc-regex中的代码,但它不起作用:

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

注意:

我正在解析通用文本文件,不一定是JavaScript,所以我不能使用像Esprima这样的JS解析器。

更新

为了重新解释我的问题,我一直试图定义一个RegEx规则,该规则说表达式必须以*/结束,而在它之前可以有任何东西(在块内),即通过此处的任何内容case表示除*/以外的任何内容。

SOLUTION:

感谢 @ m93a 的答案,他的实施已成为decomment选项ignore的一个有价值的补充。

2 个答案:

答案 0 :(得分:6)

构建表达式:Tutorial

  1. / / - 空表达
  2. / \/\*\* / - 匹配/**(已转义)
  3. / \/\*\* \s*\n / - 后跟换行符(前面有空格字符)
  4. / \/\*\* \s*\n \*\/ / - 匹配*/(已转义)
  5. / \/\*\* \s*\n ( ) \*\/ / - 添加群组< / LI>
  6. / \/\*\* \s*\n ( [^\*] ) \*\/ / - 该群组可能包含*
  7. 以外的任何内容
  8. / \/\*\* \s*\n ( [^\*] | ( ) ) \*\/ / - 或其他群组
  9. / \/\*\* \s*\n ( [^\*] | ( \* ) ) \*\/ / - 其中有*
  10. / \/\*\* \s*\n ( [^\*] | ( \* {{1} } (?!\/) ) ) \*\/ - 但后面没有/
  11. / / \/\*\* \s*\n ( [^\*] | ( {{1} } \* (?!\/) ) ) * - 重复整个事情

  12. \*\/ - Tadaa!美丽,不是吗?

答案 1 :(得分:1)

除了@ m39a的答案。如果您使用的语言或Regex库不支持环顾四周。您可以使用此: \/\*\*\s*\n([^\*]|\*[^\/])*\*\/

在Regex101上进行检查:https://regex101.com/r/TMr78R/1