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