2011年01月05日

複数行コメントにマッチする正規表現

 C#やC言語などのソースコードでは /* 〜 */ を用いることで複数行のコメントを書くことができます。正規表現を用いたパターンマッチングをする際、この書式のコメントにマッチするパターンを作成したくなることもありますが、自力で考えようとしてもなかなか難しいです。
人気ブログランキング
 さて、そのパターンは、以下のとおりです。これで複数行コメントにマッチします。

/\*([^*]|\*[^/])*\*/
 考え方は次の通りです。
  1. /* で始まる
  2. ( * 以外の文字)または( * の次に / 以外の文字)
  3. 直前の繰り返し
  4. */で終わる

 プログラム上では、以下のようにして使います。Regexクラスなどを使用するため、ソースコードの先頭にusing System.Text.RegularExpressions;と書いておいてください。

private void button1_Click(object sender,EventArgs e)
{
  string input="a/*b/*c*/d/*e\r\ne*/f";
  string pattern=@"/\*([^*]|\*[^/])*\*/";

  MatchCollection matches=Regex.Matches(input,pattern);
  StringBuilder builder=new StringBuilder();
  foreach(Match match in matches)
    builder.AppendFormat("{0} : {1}",match.Index,match.Value)
      .AppendLine();
  MessageBox.Show(builder.ToString());
}

 実行結果(builderの文字列)は次の通りです。

1 : /*b/*c*/
10 : /*e
e*/

 ちゃんと複数行に対応し、2つのコメントにそれぞれマッチしています。
web拍手 by FC2
タグ:正規表現
posted by 北条利彦 at 22:49 | Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/178886274

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。