VBScript: 正規表現で一致した文字列「全て」を抽出・置換する

VBScriptの正規表現で、 検索パターンに一致した文字列「全て」を抽出・置換する場合は RegExpオブジェクトのGlobalプロパティをTrueに設定します。

書式
RegExpオブジェクト.Global = True

Globalプロパティは文字列全体を検索・置換するかどうかを設定するプロパティです。 Trueの場合は全体を検索・置換します。 Falseの場合は最初に一致した文字列だけが抽出・置換されます。

規定値は「False」なので、 すべてを抽出・置換したい場合は「True」に設定する必要があります。

サンプルコードでGlobalプロパティがTrueとFlaseの場合の違いを見ていきます。

一致した文字列を全て置換する True

次のサンプルコードでは、GlobalプロパティをTrueに設定し、 パターンに一致する全ての文字列を置換しています。

' 検索対象
str = "bat,cat,but,cut"
' パターン
strPattern = "b.t"

' RegExpオブジェクト
Set objRe = New RegExp

' パターン
objRe.Pattern = strPattern
' 全体を検索
objRe.Global = True

' 置換
strNew = objRe.Replace(str, "zzz")

WScript.Echo strNew  ' zzz,cat,zzz,cut

最初に一致した文字列だけを置換する False

次のサンプルコードでは、Globalプロパティを設定していないため 規定値の「False」のままです。

そのため最初に一致した文字列だけを置換しています。

' 検索対象
str = "bat,cat,but,cut"
' パターン
strPattern = "b.t"

' RegExpオブジェクト
Set objRe = New RegExp

' パターン
objRe.Pattern = strPattern

' 置換
strNew = objRe.Replace(str, "zzz")

WScript.Echo strNew  ' zzz,cat,but,cut
VBScript入門