Excel、VBAで正規表現によるマッチング

前にExcelで正規表現による置換をするためのユーザー定義関数を考えました。
このユーザー定義関数はワークシートでもVBAでも使えます。

Excelで正規表現による置換 | You Look Too Cool

これは一般的なプログラミング言語では「replace」に相当するものです。
同様にExcel、VBAで正規表現によるマッチング、「match」に相当するユーザー定義関数「reg_match」を考えました。
正規表現はVBScriptに準拠します。置換では「Replace」を使いますが、マッチングでは「Test」を使います。
マッチすると「TRUE」を返します。
次のように使います。

If reg_match(str, "^[0-3][0-9]$") Then
    '処理を記載
End If

reg_match

Function reg_match(str, reg_pattern, Optional flg_ignorecase = False, Optional flg_global = False)
    Set re = CreateObject("VBScript.RegExp")
    re.Pattern = reg_pattern
    re.IgnoreCase = flg_igonorecase
    re.Global = flg_global
    reg_match = re.Test(str)
End Function

reg_replace

再掲になります。正規表現による置換をするためのユーザー定義関数です。

Function reg_replace(str, reg_pattern, str_after, Optional flg_ignorecase = False, Optional flg_global = False)
    Set re = CreateObject("VBScript.RegExp")
    re.Pattern = reg_pattern
    re.IgnoreCase = flg_igonorecase
    re.Global = flg_global
    reg_replace = re.Replace(str, str_after)
End Function

コメント

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