如何使用 RegEx 从文件中获取文档注释?
How to get documentation comments from a file by using RegEx?
假设我有一个巨大的文件。这个巨大的文件包含一堆代码。在此代码中,每个函数都以 XML 格式记录。每个文档都包含在 'documentation comments'(/** 和 **/)中。我想要一个正则表达式,它将删除所有不在文档注释之间的代码(这也将包括文档注释,但如果需要我可以在之后删除它们)。
部分脚本示例:
/**--------------------------------------------------------------------------**\
<summary>FunctionName</summary>
<returns>
Returns 1 on success.
Returns 0 on failure.
</returns>
<remarks>
This function is a function.
</remarks>
\**--------------------------------------------------------------------------**/
int FunctionName()
{
int X = 1;
if(X == 1)
return 1;
return 0;
}
预期输出:
<summary>FunctionName</summary>
<returns>
Returns 1 on success.
Returns 0 on failure.
</returns>
<remarks>
This function is a function.
</remarks>
您可以使用这种模式:
/^\/(\*\*-+\*\*)\$(.*?)^\\/$|./gsm
并替换为 </code>.</p>
<p>工作示例:<a href="https://regex101.com/r/fA8bP0/1" rel="nofollow noreferrer">https://regex101.com/r/fA8bP0/1</a></p>
<p>技巧与 <a href="">Regex Pattern to Match, Excluding when… / Except between</a> 中的技巧基本相同 - 使用交替匹配我们需要的内容,并跳过我们不需要的所有内容。</p>
<p>关于模式的一些注意事项:</p>
<ul>
<li><code>^
和 $
不是严格需要的——这取决于注释是否在整行。您可以删除它们,并删除 /m
(多行)标志。
\/(\*\*-+\*\*)\
匹配整行评论,/**-------**\
.
我们假设块开头和末尾的连字符数相同,并将其捕获到 </code>。如果这不正确,请再次使用 <code>\*\*-+\*\*
而不是 </code>。如果你有固定数量的连字符,你可以使用 <code>-{74}
.
有趣的内容被捕获到</code>。</li>
<li>其他所有内容都由 <code>.
匹配并替换掉。
警告:此模式可能会以通常的方式失败 - 包含 "/**-"
的字符串、看起来像文档的注释代码、转义字符等
假设我有一个巨大的文件。这个巨大的文件包含一堆代码。在此代码中,每个函数都以 XML 格式记录。每个文档都包含在 'documentation comments'(/** 和 **/)中。我想要一个正则表达式,它将删除所有不在文档注释之间的代码(这也将包括文档注释,但如果需要我可以在之后删除它们)。
部分脚本示例:
/**--------------------------------------------------------------------------**\
<summary>FunctionName</summary>
<returns>
Returns 1 on success.
Returns 0 on failure.
</returns>
<remarks>
This function is a function.
</remarks>
\**--------------------------------------------------------------------------**/
int FunctionName()
{
int X = 1;
if(X == 1)
return 1;
return 0;
}
预期输出:
<summary>FunctionName</summary>
<returns>
Returns 1 on success.
Returns 0 on failure.
</returns>
<remarks>
This function is a function.
</remarks>
您可以使用这种模式:
/^\/(\*\*-+\*\*)\$(.*?)^\\/$|./gsm
并替换为 </code>.</p>
<p>工作示例:<a href="https://regex101.com/r/fA8bP0/1" rel="nofollow noreferrer">https://regex101.com/r/fA8bP0/1</a></p>
<p>技巧与 <a href="">Regex Pattern to Match, Excluding when… / Except between</a> 中的技巧基本相同 - 使用交替匹配我们需要的内容,并跳过我们不需要的所有内容。</p>
<p>关于模式的一些注意事项:</p>
<ul>
<li><code>^
和 $
不是严格需要的——这取决于注释是否在整行。您可以删除它们,并删除 /m
(多行)标志。
\/(\*\*-+\*\*)\
匹配整行评论,/**-------**\
.</code>。如果这不正确,请再次使用 <code>\*\*-+\*\*
而不是 </code>。如果你有固定数量的连字符,你可以使用 <code>-{74}
.</code>。</li>
<li>其他所有内容都由 <code>.
匹配并替换掉。"/**-"
的字符串、看起来像文档的注释代码、转义字符等