• 締切済み

正規表現  マッチさせれない C#

下記のもの全体にマッチさせる表現を考えていたのですが、 どぉしても思いつきません。 まだまだ正規表現についてわかっていないのでご教授いただけないでしょうか。 /// <summary> /// メソッド1 /// </summary> /// <param name="Out">1:入力文字,2:出力文字)</param> /// 文字列     の部分は行が増えたり減ったりするので /// と文字列と改行文字で1つのくくりにして それを任意の回数繰り返しでマッチさせようとしています。 ([/// .*] \r\n)*   (///[.<>/]* \r\n)*  など試しましたがマッチしません。 そもそもこのようなものをマッチさせること自体無理なのかもしれませんが その点も含めご教授お願いいただけますでしょうか。言語はC#です

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.3

回答番号:No.2 補足への補足要求です。 Matchできない特殊文字を含む例を貼り付けできませんか。公表できないのでしたら実例でなくてもよいです。これがMatchできないという例を。 一つ落とし穴があるかもしれません。\n を含めていますから改行がないと最後の行はMatchしません。(///.+\n?)+ なら改行がなくてもMatchします。 /// <param name="Out"> @"": </param> 更に (///.*\n?)+ なら///で改行なしで終わっていてもMatchします。 /// <param name="Out"> @"": </param> /// ----- なお、 >この解決方法として >(/// (. | @"":)+ \n)+ >などしてみたのですができませんでした。 の記述について、 (///b(.b|b@"":)+b\n)+ bの箇所に空白があるようですけれども、それらは適切でしょうか。

すると、全ての回答が全文表示されます。
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

1回以上の繰り返しと考え、(///.+\n)+ で、ご質問の4行のMatchに成功しました。 Vista Ultimate SP2 + .NET Framework 3.5 SP1 + Visual C# 2008 EE SP1 で対象の文字列をtextBoxに格納して試しました。

sum41still
質問者

補足

ご回答ありがとうございます。 その方法でやってみたんですが paramの部分は特殊文字があるせいかマッチできませんでした。 この解決方法として (/// (. | @"":)+ \n)+ などしてみたのですができませんでした。 特殊文字か任意の文字列にマッチするという処理をするにはどぉしたらいいのでしょうか?

すると、全ての回答が全文表示されます。
  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

こんにちは  C#は知りませんが多くの正規表現を実装したツールなら行頭と行末を^と$で表すことになっています。  例えば行頭からスラッシュ(C#内での/が正規表現の特殊文字ではないかどうか知らない。sedならsedの特殊文字だけど)が三つなら... ^///  ちなみに行頭からスラッシュ三つの後に行末まで任意の文字の場合は、下記のように指定できますが結果は上記と全く同じとなると思います(下記は冗長なだけ)。 ^///.*$

すると、全ての回答が全文表示されます。

関連するQ&A