目次

Regexクラスの正規表現で改行を含めてパターンマッチをする - 改行が正規表現パターンの"."に含まれない - C#

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
iPentec all rights reserverd.