• ベストアンサー

正規表現で複数行を検索したいです。 VB.NET

VB.NETの正規表現で2つの文字列に囲まれた複数行の部分を取得したいです。 START ABCDE FGHIJ END 上記のようになっていた場合に ABCDE FGHIJ を取得したいです。 対象は START END のようになっていたり、 STARTEND のようになっていたりする場合にも対応できるようにしたいです。 色々試してみて .*?(\r\n)*? で良いように思ったのですがだめなようです。 もうしわけございませんが、ご教授いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Option Explicit On Option Strict On Option Compare Binary Option Infer Off Class Q4484686 Shared Sub Main() Dim r As System.IO.StreamReader Dim s As String r = New System.IO.StreamReader(New System.IO.FileStream("hoge.txt",System.IO.FileMode.Open),System.Text.Encoding.getEncoding(65001),false) s = r.ReadToEnd '本当は例外処理入れなきゃいけないと思うのですが省略します r.Close() 'ここまでは単なる準備 Dim regExp As System.Text.RegularExpressions.RegEx regExp = New System.Text.RegularExpressions.RegEx("START(((?!END).)*)END",System.Text.RegularExpressions.RegExOptions.Singleline) Dim ms As System.Text.RegularExpressions.MatchCollection = regExp.Matches(s) System.Console.WriteLine(ms.Count) For each m As System.Text.RegularExpressions.Match in ms System.Console.WriteLine(m.Groups(1).ToString()) System.Console.WriteLine("=======================") Next System.Console.ReadKey(true) End Sub End Class '多分コレでよいかと。動かなかったらすまん。 'STARTが単独で存在し,ENDがないとか 'STARTがなくてENDだけあるとか 'STARTが1個でENDが2個あるとか 'STARTが2個でENDが1個あるとか 'あまり深くは考えてない

goo081102
質問者

お礼

himajin100000様、詳しいサンプルを書いて下さいまして ありがとうございます。 参考にさせて頂きたいと思います。ありがとうございました。

関連するQ&A

専門家に質問してみよう