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 で正規表現を使えなくなるってことでしょうかね。
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事にコメントをしてみませんか?