こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

下記のもの全体にマッチさせる表現を考えていたのですが、
どぉしても思いつきません。
まだまだ正規表現についてわかっていないのでご教授いただけないでしょうか。



/// <summary>
/// メソッド1
/// </summary>
/// <param name="Out">1:入力文字,2:出力文字)</param>




/// 文字列     の部分は行が増えたり減ったりするので
/// と文字列と改行文字で1つのくくりにして
それを任意の回数繰り返しでマッチさせようとしています。

([/// .*] \r\n)*  
(///[.<>/]* \r\n)* 
など試しましたがマッチしません。 そもそもこのようなものをマッチさせること自体無理なのかもしれませんが その点も含めご教授お願いいただけますでしょうか。言語はC#です

投稿日時 - 2010-03-15 09:01:13

QNo.5753021

暇なときに回答ください

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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の箇所に空白があるようですけれども、それらは適切でしょうか。

投稿日時 - 2010-03-26 02:33:14

ANo.2

1回以上の繰り返しと考え、(///.+\n)+ で、ご質問の4行のMatchに成功しました。

Vista Ultimate SP2 + .NET Framework 3.5 SP1 + Visual C# 2008 EE SP1 で対象の文字列をtextBoxに格納して試しました。

投稿日時 - 2010-03-21 10:01:40

補足

ご回答ありがとうございます。

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

投稿日時 - 2010-03-25 08:30:15

ANo.1

こんにちは
 C#は知りませんが多くの正規表現を実装したツールなら行頭と行末を^と$で表すことになっています。

 例えば行頭からスラッシュ(C#内での/が正規表現の特殊文字ではないかどうか知らない。sedならsedの特殊文字だけど)が三つなら...
^///

 ちなみに行頭からスラッシュ三つの後に行末まで任意の文字の場合は、下記のように指定できますが結果は上記と全く同じとなると思います(下記は冗長なだけ)。
^///.*$

投稿日時 - 2010-03-15 09:43:01

あなたにオススメの質問