メイン画像

VBScript - 正規表現で文字列を検索/置換する

VBScript - 正規表現で文字列を検索/置換する


VBScript では正規表現を使って文字列の検索や置換ができます。

VBScript で正規表現を使うには RegExp オブジェクトを使います。

以下のスクリプトは RegExp オブジェクトの使用例です。

“IS1 Is2 IS3 iS4” から大文字/小文字を区別せず “IS” を探し、見つかった位置と文字列を表示します。

Option Explicit

Dim re
Set re = New RegExp
re.Pattern = "IS"
re.IgnoreCase = True
re.Global = True

Dim matches
Set matches = re.Execute("IS1 Is2 IS3 iS4")

Dim match
For Each match In matches
    WScript.Echo "見つかった位置: " & match.FirstIndex & ", 文字: " & match.Value
Next

Set re = Nothing

スクリプトの実行結果は以下のようになります。

見つかった位置: 0, 文字: IS
見つかった位置: 4, 文字: Is
見つかった位置: 8, 文字: IS
見つかった位置: 12, 文字: iS

プロパティとメソッド

Pattern プロパティ

正規表現のパターンを設定します。

Global プロパティ

文字列全体を検索対象とする場合は True を指定します。
最初に一致した時点で検索を終えるなら False を指定します。

既定値は False です。

IgnoreCase プロパティ

検索時に大文字/小文字を区別しない場合は True を指定します。
区別する場合は False を指定します。

Execute メソッド

引数の文字列から、正規表現のパターンと一致する文字列を検索します。

re.Execute(元の文字列)

一致する文字列が見つかった場合、Matches コレクションを返します。
Matches コレクションは Match オブジェクトのリストです。

一致する文字列が見つからない場合、空の Matches コレクションを返します。

Replace メソッド

正規表現のパターンと一致する文字列を置換します。

re.Replace(元の文字列, 置換後の文字列) 

一致する文字列が見つかった場合、元の文字列を置換した結果が返されます。
一致する文字列が見つからない場合、元の文字列がそのまま返されます。

次のスクリプトを実行すると「HELLO Java and VBScript」と表示されます。

Global プロパティが False であるため、最初に一致した文字列を置換した時点で終了します。

Dim re
Set re = New RegExp
re.Pattern = "VB"

WScript.Echo re.Replace("HELLO VB and VBScript", "Java")

次のスクリプトを実行すると「HELLO Java and JavaScript」と表示されます。

Global プロパティを True にしたので、文字列の最後までが対象となります。

Dim re
Set re = New RegExp
re.Pattern = "VB"
re.Global = True

WScript.Echo re.Replace("HELLO VB and VBScript", "Java")

Test メソッド

引数の文字列に、パターンに一致する文字列があるかどうかを返します。

re.Test(元の文字列)

一致する文字列が見つかった場合は True を、見つからなかった場合は False を返します。

Dim re
Set re = New RegExp
re.Pattern = "WORLD"

If re.Test("HELLO WORLD") Then
    WScript.Echo "あり"
Else
    WScript.Echo "なし"
End If

余談

余談ですが、実は正規表現は VBA には含まれていない機能です。
VBA で正規表現を使う場合、VBScript の RegExp オブジェクトを利用することになります。

ということは、VBScript が廃止になったら VBA で正規表現を使えなくなるってことでしょうかね。


アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事