次の形式のコメントを削除する必要がありました。
<!-- Foo
Bar -->
先頭と末尾の「区切り文字」の間のすべて (改行を含む) に一致する正規表現を使用したいと考えています。
このタスクに適した正規表現は何でしょうか?
なし。正規表現が基づいている文脈自由文法では記述できません。
このスレッドが XML でエクスポートされたとします。あなたの例 (<!-- FOO Bar -->) は、CDATA で囲まれていると失われますが、正確にはコメントではありません。
簡単な方法:
Regex xmlCommentsRegex = new Regex("<!--.*?-->", RegexOptions.Singleline | RegexOptions.Compiled);
そしてより良い方法:
Regex xmlCommentsRegex = new Regex("<!--(?:[^-]|-(?!->))*-->", RegexOptions.Singleline | RegexOptions.Compiled);
「適切な」方法は、XSLT を使用してコメント以外のすべてをコピーすることです。
正規表現を使用してXMLを解析することは、悪いスタイルと見なされます。XML解析ライブラリを使用します。