VBScriptで正規表現(RegExp)を使いこなす!文字列操作をスマートにする実用テクニック

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に組み込まれていますが、使用する環境によっては無効になっていることもあるので、事前に確認しておきましょう。
  • GlobalFalseのままだと、最初の一致しか取得されないため、複数マッチさせたい場合は必ずTrueに設定してください。
  • Patternに設定する文字列に誤りがあると、スクリプト実行時にエラーが出る場合があります。まずは小さな例でテストすると安心です。

まとめ

VBScriptで正規表現を使うことで、文字列処理が飛躍的に効率化されます。RegExpオブジェクトの基本を理解し、Patternの書き方と各種メソッド(ExecuteReplaceTest)を使いこなすことで、住所やメールアドレスの抽出、入力チェック、データ整形などさまざまな場面に応用できます。VBScriptの力を最大限引き出すために、ぜひ正規表現の習得にチャレンジしてみてください。

タイトルとURLをコピーしました