ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA 正規表現 RegExpオブジェクトのプロパティとメソッド

VBA 正規表現で使用する文字列パターン - ray88’s diary
■RexExpオブジェクトのプロパティ

プロパティ 設定内容
Pattern 正規表現を定義する文字列。メソッドを呼び出す前に必ず設定されている必要がある
IgnoreCase 大文字・小文字を区別するかどうかを表す。Trueにすると区別しない。初期値はFalse
Global ReplaceやExecuteメソッドを呼び出す際、複数マッチを行うかどうかを表す。Trueでマッチする全ての文を検索・置換。初期値はFalse
MultiLine 文字列を複数行として扱うかどうかを表す。Trueの場合、各行の先頭や末尾でも”^”や“$"がマッチする。初期値はFalse

RegExpオブジェクトのメソッド

メソッド 動作内容
Test(String) 引数stringに指定された文字列を検索し、正規表現とマッチする場合はTrueを返し、一致しない場合はFalseを返す
Replace(string1,string2) 引き数string1は検索または置換の対象となる文字列を指定、引数string2には置換する文字列を指定する
Execute(string) 引数stringに指定した文字列を検索し、検索結果をMatchオブジェクトを含むMatchesコレクションとして返す
MutiLine 文字列を複数行として扱うかどうかを表す。Trueの場合、各行の先頭や末尾でも"^"や"$"がマッチするようになる。初期値はFalse

■パターンマッチした文字列を抽出する
 Executeメソッドで文字列を抽出→マッチコレクションに格納される
(例)カッコ内の文字列を抽出

Sub RegExp()
'---------------------------
'カッコ内の文字を抽出
'---------------------------
    Dim Reg As Object
    Dim MatchStr As Object
    Dim strTest As String
    Dim strExe As String    
    'テスト用文字列を設定
    strTest = "山田商店(本店5064)営業部"
    Set Reg = CreateObject("VBScript.RegExp")
    With Reg
        .Pattern = "\(.*\)"
        'パターンにマッチした文字列を抽出しマッチコレクションに格納
        Set MatchStr = .Execute(strTest)
        'マッチコレクションの0番目の要素を変数に格納
        'この時点では(本店5064)
        strExe = MatchStr(0)
        Debug.Print strExe
    End With
    '(本店5064)の括弧を削除
    strExe = Replace(strExe, "(", "")
    strExe = Replace(strExe, ")", "")
    Debug.Print strExe
End Sub