Regex.Replaceメソッドでは、置換後の文字列も正規表現として解釈されます。 具体的には、置換文字列中の$
で始まる文字列が置換の正規表現要素と解釈されます。 これを用いると、正規表現にマッチした文字列を全く別の文字列に置き換えるだけでなく、元の文字列を使った別の文字列に置き換えることができます。
置換の正規表現要素の一例として、$0
は正規表現にマッチした文字列へと置き換えられます。 次の例では、拡張子の正規表現にマッチした箇所($0
)に".bak"を追加して置換しています。
Regex.Replaceメソッドと置換の正規表現を用いてマッチした文字列へと置き換える
Imports System
Imports System.Text.RegularExpressions
Class Sample
Shared Sub Main()
Dim files() As String = New String() { _
"sample.txt", _
"sample.txt.bak", _
"sample.cs", _
"test.txt", _
"test.jpeg", _
"README" _
}
For Each file As String In files
Console.Write("{0,-20} => ", file)
' 正規表現"\..*"で探索し、マッチした箇所に".bak"を付加して置き換える
Dim bakFile As String = Regex.Replace(file, "\..*", "$0.bak")
Console.WriteLine(bakFile)
Next
End Sub
End Class
実行結果
sample.txt => sample.txt.bak sample.txt.bak => sample.txt.bak.bak sample.cs => sample.cs.bak test.txt => test.txt.bak test.jpeg => test.jpeg.bak README => README
$0
以外の置換の正規表現要素については正規表現の構造化および処理(マッチ・グループ・キャプチャ) §.グループと置換文字列、および.NET Frameworkで使用できる正規表現 §.置換で解説しています。
Match.Resultメソッドを用いることでも置換の正規表現要素を使った置換をおこなうことができます。 詳しくは正規表現の構造化および処理(マッチ・グループ・キャプチャ) §.Match.Resultメソッドで解説しています。