VBのSystem.Text.RegularExpressions.Regexを用いて、複数のマッチングに対して置換を行いたいのですが、
どのようにすればよいでしょうか?
例えば、文字列strの中に改行(cr+lf)が3つ以上続く場合、該当するものすべて改行を2つにしたいのですが、
Regex.Replace(str, "(\r\n){3,}", vbCrLf & vbCrLf)
とすると、最初にマッチしたものしか置換されません。
どなたかご教示願えませんでしょうか?
よろしくお願いいたします。
環境を書くのを忘れました。
VB2005ですが、VB2008でも使用するかもしれません。
よろしくお願いいたします。
簡単なテストコード書いてみましたが,ちゃんとぜんぶ置換されました。
実際に,どのようなコードを書き,また,どのように確認したのでしょうか。
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
ツイート | ![]() |