正規表現を使用して複数のマッチングの置換を行うには?


ベンジャミン  2009-01-24 01:14:36  No: 145693  IP: 192.*.*.*

VBのSystem.Text.RegularExpressions.Regexを用いて、複数のマッチングに対して置換を行いたいのですが、
どのようにすればよいでしょうか?
例えば、文字列strの中に改行(cr+lf)が3つ以上続く場合、該当するものすべて改行を2つにしたいのですが、
Regex.Replace(str, "(\r\n){3,}", vbCrLf & vbCrLf)
とすると、最初にマッチしたものしか置換されません。
どなたかご教示願えませんでしょうか?
よろしくお願いいたします。

編集 削除
ベンジャミン  2009-01-24 01:16:20  No: 145694  IP: 192.*.*.*

環境を書くのを忘れました。
VB2005ですが、VB2008でも使用するかもしれません。
よろしくお願いいたします。

編集 削除
YuO  2009-01-24 17:09:20  No: 145695  IP: 192.*.*.*

簡単なテストコード書いてみましたが,ちゃんとぜんぶ置換されました。
実際に,どのようなコードを書き,また,どのように確認したのでしょうか。

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Const target As String = _
         "A" & vbCrLf & vbCrLf & vbCrLf & _
         "B" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
         "C"
        Const pattern As String = _
         "(\r\n){3,}"
        Const replacement As String = _
         vbCrLf & vbCrLf

        Console.WriteLine("[Before]")
        Console.WriteLine(target)
        Console.WriteLine()

        Dim replaced As String = _
         Regex.Replace(target, pattern, replacement)

        Console.WriteLine("[After]")
        Console.WriteLine(replaced)
    End Sub
End Module

編集 削除