2011-05-26 3 views
6

/**/の間のすべてを削除するには、/**/を含むC#正規表現が必要です。 したがって、基本的には、指定されたテキスト内のすべてのコードコメントを削除します。C/C#コメントを削除するために正規表現が必要

var regex = new Regex("/\*((?!\*/).)*\*/", RegexOptions.Singleline); 

regex.Replace(input, ""); 
+1

本当にそのための正規表現は必要ありません。 –

+0

だから何が問題なのですか? – Reniuz

+1

そう簡単ではありません。あなたのコードには "This:/ * boo */not no comment"のような文字列を入れることができます。 – Jens

答えて

6

は次のようなものであるべき。コメントはSQLのように入れ子にすることができれば、基本的な正規表現は、このように見えるように起こっている:あなたは何を剥ぎ取りませんしているまで、あなたは、ループする必要があります

/\*.*?\*/ 

対照的に、最初のコメント終了*/Cのように、あなたは否定先読みで、それは貪欲必要がある、場合:

/\*((?!\*/).)*\*/ 
2

コメントを入れ子にすることができることを警戒してください:

0

私はまた、フォーム

と行のコメントを無視する必要ました
// blablabla 

だから、誰かがまた、最後の部分を追加することにより、正規表現を変更し、これが必要な場合のために|(//.*)ので、完全な形は次のようになります。

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*) 
関連する問題