巨大なファイルがあるとしましょう。この巨大なファイルには、たくさんのコードが含まれています。このコードでは、すべての関数が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>
次のパターンを使用できます。
/^\/(\*\*-+\*\*)\\$(.*?)^\\\1\/$|./gsm
に置き換え$2
ます。
実例:https://regex101.com/r/fA8bP0/1
トリックは基本的に一致する正規表現パターンと同じですが、次の場合を除きます…/間を除いて-必要なものに一致するように交互に使用し、不要なものはすべてスキップします。
パターンに関する注意事項:
^
そして$
厳密に必要とされていない-それはコメントは行全体であるかどうかに依存します。それらを削除し、/m
(複数行)フラグを削除できます。\/(\*\*-+\*\*)\\
コメントの1行全体に一致し/**-------**\
ます。\1
ます。これが正しくない場合は、の\*\*-+\*\*
代わりにもう一度使用してください\1
。ハイフンの数が固定されている場合は、を使用できます-{74}
。$1
ます。.
、によって照合され、置き換えられます。"/**-"
ドキュメントのように見えるコメント付きコード、エスケープ文字など。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加