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