用于 jsDoc 注释的正则表达式
RegEx for jsDoc comments
找不到任何可用的 RegExp 示例来匹配文本文件中的所有 jsDoc 注释块。
基本上,它需要找到所有满足以下规则的块:
- 以
/**
开头,后跟一个或多个换行符
- 以
*/
结尾
- 块中可以有任何内容,包括代码示例和 HTML。
我尝试了 jsdoc-regex 中的代码,但没有成功:
/[^\S\r\n]*\/(?:\*{2})([\W\w]+?)\*\/([\W\w]+?)?(?=\s+\/\*{1,2}|$)/g;
注意:
我正在解析通用文本文件,不一定JavaScript,所以我不能使用像 Esprima 这样的 JS 解析器。
更新:
为了重新表述我的问题,我一直在尝试定义一个 RegEx 规则,该规则规定表达式必须以 */
结尾,而它之前可以有任何内容(在块内),即任何内容在这种情况下意味着除 */
.
之外的任何内容
解决方案:
的宝贵补充
建立你的表情:教程
/ /
– 空表达式
/
\/\*\*
/
– 匹配/**
(转义)
/
\/\*\*
\s*\n
/
– 后跟一个换行符(空白字符可能在前)
/
\/\*\*
\s*\n
\*\/
/
– 匹配*/
(转义)
/
\/\*\*
\s*\n
(
)
\*\/
/
– 添加群组
/
\/\*\*
\s*\n
(
[^\*]
)
\*\/
/
– 该组可以包含除 *
之外的任何内容
/
\/\*\*
\s*\n
(
[^\*]
|
(
)
)
\*\/
/
– 或另一组
/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
)
)
\*\/
/
– 其中有一个 *
/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
(?!\/)
)
)
\*\/
/
– 但后面没有 /
/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
(?!\/)
)
)
*
\*\/
/
– 重复整个事情
/\/\*\*\s*\n([^\*]|(\*(?!\/)))*\*\//
– Tadaa! 很漂亮,不是吗?
除了@m39a 的回答。如果您使用的语言或正则表达式库不支持环视。你可以使用这个:
\/\*\*\s*\n([^\*]|\*[^\/])*\*\/
在 Regex101 上查看:https://regex101.com/r/TMr78R/1
找不到任何可用的 RegExp 示例来匹配文本文件中的所有 jsDoc 注释块。
基本上,它需要找到所有满足以下规则的块:
- 以
/**
开头,后跟一个或多个换行符 - 以
*/
结尾
- 块中可以有任何内容,包括代码示例和 HTML。
我尝试了 jsdoc-regex 中的代码,但没有成功:
/[^\S\r\n]*\/(?:\*{2})([\W\w]+?)\*\/([\W\w]+?)?(?=\s+\/\*{1,2}|$)/g;
注意:
我正在解析通用文本文件,不一定JavaScript,所以我不能使用像 Esprima 这样的 JS 解析器。
更新:
为了重新表述我的问题,我一直在尝试定义一个 RegEx 规则,该规则规定表达式必须以 */
结尾,而它之前可以有任何内容(在块内),即任何内容在这种情况下意味着除 */
.
解决方案:
的宝贵补充建立你的表情:教程
/ /
– 空表达式/
\/\*\*
/
– 匹配/**
(转义)/
\/\*\*
\s*\n
/
– 后跟一个换行符(空白字符可能在前)/
\/\*\*
\s*\n
\*\/
/
– 匹配*/
(转义)/
\/\*\*
\s*\n
(
)
\*\/
/
– 添加群组
之外的任何内容/
\/\*\*
\s*\n
(
[^\*]
)
\*\/
/
– 该组可以包含除*
/
\/\*\*
\s*\n
(
[^\*]
|
(
)
)
\*\/
/
– 或另一组/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
)
)
\*\/
/
– 其中有一个*
/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
(?!\/)
)
)
\*\/
/
– 但后面没有/
/
\/\*\*
\s*\n
(
[^\*]
|
(
\*
(?!\/)
)
)
*
\*\/
/
– 重复整个事情/\/\*\*\s*\n([^\*]|(\*(?!\/)))*\*\//
– Tadaa! 很漂亮,不是吗?
除了@m39a 的回答。如果您使用的语言或正则表达式库不支持环视。你可以使用这个:
\/\*\*\s*\n([^\*]|\*[^\/])*\*\/
在 Regex101 上查看:https://regex101.com/r/TMr78R/1