VBScriptは古くからWindows環境で使われてきたスクリプト言語ですが、その中でも便利な機能の一つが「正規表現(RegExp)」です。文字列の検索・置換・抽出など、複雑な処理をシンプルなコードで実現できるのが魅力です。この記事では、VBScriptで正規表現を扱うための基本的な書き方から、具体的な使用例までをわかりやすく解説します。正規表現に不慣れな方でも、今日から使い始められるように丁寧に説明していきます。
RegExpオブジェクトとは?
VBScriptで正規表現を使うには、まず「RegExp
オブジェクト」を利用します。これは、VBScriptで提供される標準オブジェクトで、文字列パターンに基づくマッチングを行うために使用されます。
vbscriptコピーする編集するDim regEx
Set regEx = New RegExp
このオブジェクトを使って、検索パターンやオプション、対象文字列などを設定していきます。
RegExpオブジェクトの基本プロパティ
以下に、RegExp
オブジェクトの主要なプロパティを紹介します。
- Pattern
正規表現のパターンを指定します。 vbscriptコピーする編集するregEx.Pattern = "\d+"
- IgnoreCase
大文字と小文字を区別するかどうかを指定します(True
で区別しない)。 vbscriptコピーする編集するregEx.IgnoreCase = True
- Global
すべての一致を検索するかどうか(True
で全一致、False
で最初の一致のみ)。 vbscriptコピーする編集するregEx.Global = True
Matchメソッドで文字列を検索する
RegExp
オブジェクトで文字列を検索するには、Execute
メソッドを使います。
Dim matches, match
regEx.Pattern = "\d+"
Set matches = regEx.Execute("商品番号は12345、価格は678円です")
For Each match In matches
MsgBox match.Value
Next
この例では、数字の並び(\d+)に一致する部分をすべて取得し、それぞれ表示しています。
正規表現パターンの例
VBScriptの正規表現で使える主なパターンの例をいくつか紹介します。
パターン | 説明 |
---|---|
\d | 数字1桁([0-9]と同じ) |
\w | 英数字またはアンダースコア |
. | 任意の1文字 |
+ | 直前の要素の1回以上の繰り返し |
* | 0回以上の繰り返し |
^ | 行の先頭 |
$ | 行の末尾 |
Replaceメソッドで文字列を置換する
一致した文字列を別の文字に置き換える場合は、Replace
メソッドを使用します。
Dim result
regEx.Pattern = "\d+"
result = regEx.Replace("合計金額は1234円です", "****")
MsgBox result ' 出力: 合計金額は****円です
数値を伏せ字にする、といったマスク処理にも使えます。
Testメソッドで一致の有無を確認する
特定のパターンに一致する文字列が含まれているかどうかを確認したい場合は、Test
メソッドが便利です。
If regEx.Test("注文番号ABC123") Then
MsgBox "一致しました"
Else
MsgBox "一致しませんでした"
End If
メールアドレスや電話番号のフォーマットチェックにも応用可能です。
よく使う実用例まとめ
メールアドレスの検証
regEx.Pattern = "^[\w.-]+@[\w.-]+\.\w+$"
If regEx.Test("test@example.com") Then
MsgBox "有効なメールアドレスです"
End If
郵便番号の抽出
regEx.Pattern = "\d{3}-\d{4}"
Set matches = regEx.Execute("住所は123-4567 東京都港区")
MsgBox matches(0).Value ' 出力: 123-4567
HTMLタグの除去
regEx.Pattern = "<.*?>"
regEx.Global = True
cleanText = regEx.Replace("<p>こんにちは</p>", "")
MsgBox cleanText ' 出力: こんにちは
注意点とトラブルシューティング
RegExp
は標準ではVBScriptに組み込まれていますが、使用する環境によっては無効になっていることもあるので、事前に確認しておきましょう。Global
がFalse
のままだと、最初の一致しか取得されないため、複数マッチさせたい場合は必ずTrue
に設定してください。Pattern
に設定する文字列に誤りがあると、スクリプト実行時にエラーが出る場合があります。まずは小さな例でテストすると安心です。
まとめ
VBScriptで正規表現を使うことで、文字列処理が飛躍的に効率化されます。RegExp
オブジェクトの基本を理解し、Pattern
の書き方と各種メソッド(Execute
、Replace
、Test
)を使いこなすことで、住所やメールアドレスの抽出、入力チェック、データ整形などさまざまな場面に応用できます。VBScriptの力を最大限引き出すために、ぜひ正規表現の習得にチャレンジしてみてください。