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, "");
}
実行結果
入力
/*
Comment
*/
結果
/*
Comment
*/
RegexOptions.Singlelineを指定すると ".*"パターンに改行を含むため、複数行にわたるパターンにマッチします。
Regex reg = new Regex(@"/\*.*\*/", RegexOptions.Singleline);
Match match = reg.Match(desc);
if (match.Success == true) {
desc = reg.Replace(desc, "delete");
}
実行結果
入力
/*
Comment
*/
結果
delete
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2011-10-18