用于 jsDoc 注释的正则表达式

RegEx for jsDoc comments

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

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

我尝试了 jsdoc-regex 中的代码,但没有成功:

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

注意:

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

更新:

为了重新表述我的问题,我一直在尝试定义一个 RegEx 规则,该规则规定表达式必须以 */ 结尾,而它之前可以有任何内容(在块内),即任何内容在这种情况下意味着除 */.

之外的任何内容

解决方案:

感谢 @m93a 的回答,他的实现已成为对 decomment, option ignore.

的宝贵补充

建立你的表情:教程

  1. / / – 空表达式

  2. / \/\*\* / – 匹配/**(转义)

  3. / \/\*\* \s*\n / – 后跟一个换行符(空白字符可能在前)

  4. / \/\*\* \s*\n \*\/ / – 匹配*/(转义)

  5. / \/\*\* \s*\n ( ) \*\/ / – 添加群组

  6. / \/\*\* \s*\n ( [^\*] ) \*\/ / – 该组可以包含除 *

    之外的任何内容
  7. / \/\*\* \s*\n ( [^\*] | ( ) ) \*\/ / – 或另一组

  8. / \/\*\* \s*\n ( [^\*] | ( \* ) ) \*\/ / – 其中有一个 *

  9. / \/\*\* \s*\n ( [^\*] | ( \* (?!\/) ) ) \*\/ / – 但后面没有 /

  10. / \/\*\* \s*\n ( [^\*] | ( \* (?!\/) ) ) * \*\/ / – 重复整个事情

  11. /\/\*\*\s*\n([^\*]|(\*(?!\/)))*\*\//Tadaa! 很漂亮,不是吗?

除了@m39a 的回答。如果您使用的语言或正则表达式库不支持环视。你可以使用这个: \/\*\*\s*\n([^\*]|\*[^\/])*\*\/

在 Regex101 上查看:https://regex101.com/r/TMr78R/1