VBS 正規表現(Regular expressions)

VBSスクリプトの正規表現(Regular expressions)は検索用の文字列パターンを使用して、一致する文字列を検索/置換することができます。初めはとっつきにくいイメージがありますが、一文字ずつの比較や、instr関数を使用して比較するよりも遥かに高度な検索を、よりコンパクトなソースで実装することが出来る優れものの機能です。

<正規表現のオブジェクトの生成>

Dim objRegExp
Set objRegExp = new regexp
※下の定義の仕方でもOKです。
Set objRegExp = CreateObject("VBScript.RegExp")

次に検索する文字列を指定しますが、その前にメタ文字について説明をします。
メタ文字は正規表現での検索をより高度に検索するための記号です。

<メタ文字>

記号説明

.

1回以上の任意の文字に一致(\n、\rの改行を除く)

*

0回以上の任意の文字に一致

[]

括弧で括られた検索文字のいずれか1つに一致

[0-9]

0から9までの数値のいずれかに1つに一致

[a-z]

aからzまでの小文字のアルファベットに一致

[A-Z]

aからzまでの大文字に一致する
※ メタ文字を文字列として使用する場合は、”\”のリテラルをメタ文字の前に設定する。
※ その他のメタ文字の説明はこちら

<検索パターンを設定>
objRegExp.Pattern = "検索パターン"

<検索の実行>
Set objMach = objRegExp.Execute(“検索するデータ”)

<結果の確認>
objMach.Count > 0

では、IPアドレスを取得する場合を例に説明します。

検索する文字:"IP Address. . . . . . . . . . . . : 110.110.67.57"

Dim objRegExp
Dim objMatchs
Dim objMatch
Set objRegExp = new regexp

objRegExp.Pattern = "(([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+))"

Set objMatchS = objRegExp.Execute("IP Address. . . . . . . . . . . . : 110.110.67.57")

For Each objMatch in objMatchs
    ec objMatch.SubMatches(0) '[2008/10/28 22:22:25]110.110.67.57
    ec objMatch.SubMatches(1) '[2008/10/28 22:22:25]110
    ec objMatch.SubMatches(2) '[2008/10/28 22:22:25]110
    ec objMatch.SubMatches(3) '[2008/10/28 22:22:25]67
    ec objMatch.SubMatches(4) '[2008/10/28 22:22:25]57
Next

'メッセージ表示用
Sub ec(msg)
    Wscript.Echo "[" & Date & " " & time & "]" & msg
End Sub

'<サンプル>

IPアドレスを取得する

'<その他参考情報>

正規表現の注意事項一覧
Matchオブジェクトのプロパティ一覧
メタ文字