3

次の形式のコメントを削除する必要がありました。

<!--  Foo

      Bar  -->

先頭と末尾の「区切り文字」の間のすべて (改行を含む) に一致する正規表現を使用したいと考えています。

このタスクに適した正規表現は何でしょうか?

4

5 に答える 5

6

なし。正規表現が基づいている文脈自由文法では記述できません。

このスレッドが XML でエクスポートされたとします。あなたの例 (<!-- FOO Bar -->) は、CDATA で囲まれていると失われますが、正確にはコメントではありません。

于 2008-12-28T05:39:13.157 に答える
5

簡単な方法:

Regex xmlCommentsRegex = new Regex("<!--.*?-->", RegexOptions.Singleline | RegexOptions.Compiled);

そしてより良い方法:

Regex xmlCommentsRegex = new Regex("<!--(?:[^-]|-(?!->))*-->", RegexOptions.Singleline | RegexOptions.Compiled);
于 2008-12-28T05:36:05.987 に答える
4

「適切な」方法は、XSLT を使用してコメント以外のすべてをコピーすることです。

于 2008-12-28T07:06:31.593 に答える
0

正規表現を使用してXMLを解析することは、悪いスタイルと見なされます。XML解析ライブラリを使用します。

于 2008-12-28T18:04:47.160 に答える