前に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
'処理を記載
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
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
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
コメント