Regex.Replaceメソッドでは、引数に正規表現と置換後の文字列を指定することによって、正規表現にマッチした箇所を別の文字列へと置き換えることができます。
次の例では、正規表現\..*
にマッチする箇所を新しい文字列.bak
に置換することにより、ファイル名の拡張子をすべて.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, "\..*", ".bak")
Console.WriteLine(bakFile)
Next
End Sub
End Class
実行結果
sample.txt => sample.bak sample.txt.bak => sample.bak sample.cs => sample.bak test.txt => test.bak test.jpeg => test.bak README => README
Regex.Replaceメソッドでは、置換後の文字列において$
で始まる文字列が正規表現要素として解釈される場合があります。 正規表現要素として解釈されないようにするには、$
を$$
とエスケープする必要があります。 Regex.Replaceメソッドで$
を含む文字列へと置換する場合は注意してください。
置換の正規表現要素については後述の§.マッチした文字列への置換 (置換の正規表現要素)および.NET Frameworkで使用できる正規表現 §.置換を参照してください。
Match.Resultメソッドを用いることでもマッチ箇所の置換をおこなうことができます。 詳しくは正規表現の構造化および処理(マッチ・グループ・キャプチャ) §.Match.Resultメソッドで解説しています。
パスやファイル名の拡張子部分を置換するにはPath.ChangeExtensionメソッドを使うこともできます。