RegExクラスを用いて正規表現パターンマッチをする際に "."のパターンで改行文字(\n)が含まれないことがあります。通常のRegExでは"."のパターンは改行コード以外の任意の文字のパターンを示しています。そのため ".*"というパターンを設定した場合改行の直前までしかパターンにマッチしません。
改行コードも任意の文字として含めたい場合は、RegExクラスのRegexOptionsの引数にRegexOptions.Singlelineを含めます。
Cのコメント /* */のパターンマッチのコードです。
RegexOptions.Noneを指定した場合 ".*"パターンは改行を含まないため、複数行にわたるパターンにはマッチしません。
Regex reg = new Regex(@"/\*.*\*/", RegexOptions.None);
Match match = reg.Match(desc);
if (match.Success == true) {
desc = reg.Replace(desc, "");
}
RegexOptions.Singlelineを指定すると ".*"パターンに改行を含むため、複数行にわたるパターンにマッチします。
Regex reg = new Regex(@"/\*.*\*/", RegexOptions.Singleline);
Match match = reg.Match(desc);
if (match.Success == true) {
desc = reg.Replace(desc, "delete");
}