C#やC言語などのソースコードでは /* 〜 */ を用いることで複数行のコメントを書くことができます。正規表現を用いたパターンマッチングをする際、この書式のコメントにマッチするパターンを作成したくなることもありますが、自力で考えようとしてもなかなか難しいです。
さて、そのパターンは、以下のとおりです。これで複数行コメントにマッチします。
/\*([^*]|\*[^/])*\*/
考え方は次の通りです。
プログラム上では、以下のようにして使います。
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つのコメントにそれぞれマッチしています。