我们说我有一个巨大的档案。这个巨大的文件包含一堆代码。在此代码中,每个函数都以XML格式记录。每个文档都包含在'文档注释中。 (/ **和** /)。我想要一个正则表达式,它将删除不在文档注释之间的所有代码(这也包括文档注释,但如果需要我可以删除它们。)
部分脚本示例:
/**--------------------------------------------------------------------------**\
<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>
答案 0 :(得分:1)
您可以使用此模式:
/^\/(\*\*-+\*\*)\\$(.*?)^\\\1\/$|./gsm
并替换为$2
。
工作示例:https://regex101.com/r/fA8bP0/1
诀窍与Regex Pattern to Match, Excluding when… / Except between基本相同 - 使用交替来匹配我们需要的东西,并跳过我们不想要的一切。
关于模式的一些注释:
^
和$
并非严格需要 - 这取决于评论是否在整行上。您可以删除它们,然后删除/m
(多行)标记。\/(\*\*-+\*\*)\\
匹配评论的整行,/**-------**\
。\1
。如果这不正确,请再次使用\*\*-+\*\*
而不是\1
。如果您使用固定数量的连字符,则可以使用-{74}
。$1
。.
匹配,并被替换掉。"/**-"
的字符串,注释代码看起来像文档,转义字符等等。