Excelで正規表現を使いたい


VBAで正規表現 01回

Excelで正規表現を使う

Excelのワークシート上の検索や置換で、そのままでは正規表現を使うことはできませんが、VBAにおいては”Microsoft VBScript Regular Expressions 5.5ライブラリ”を使用することで正規表現を利用できます。
正規表現を使って置換を行うためには、このライブラリをプロジェクトに追加する必要があります。
ではどのようにプロジェクトに追加すれば良いのでしょうか?

事前バインディングの場合

まず、VBE (Visual Basic for Applications Editor) を開き、「ツール」をクリックして、「参照設定」から「Microsoft VBScript Regular Expressions 5.5」を選択し、チェックを入れます。
これによりRegExpオブジェクトを使用することができます。RegExpオブジェクトは、正規表現の機能を提供するオブジェクトです。
そしてモジュールに記述するプロシージャの宣言において
Dim 変数名 As New RegExp
と宣言することで使用できるようになります。 また、参照設定でチェックを入れるのは、ブックごとに行う必要があります。

正規表現事前準備参照設定する場合

遅延バインディングの場合

参照設定で「Microsoft VBScript Regular Expressions 5.5」を選択しチェックを入れない場合には、モジュールに記述するプロシージャの宣言において
Dim 変数名 As Object
Set 変数名 = CreateObject("VBScript.RegExp")
と記述することでRegExpオブジェクトを利用できるようになります。

CreateObject関数を使う場合

メタ文字 Metacharacterとは

メタ文字(メタキャラクタ)とは、プログラムに与える文字列データの中で、特別な意味や役割を持つ非アルファベット文字のことを表します。
メタ文字は、その文字本来の意味とは異なる役割をもっています。
メタ文字(メタキャラクタ)は正規表現を使用するための、条件を設定するために使います。

正規表現、メタ文字の一覧
 ^ $ ? * + . | { } \ [ ] ( )
正規表現では、「+」は「足す」ではなく直前の1回以上の連続文字を表します。

メタ文字とその意味

メタ文字 説明
^ 文字列の始まりを表します。 ^abc は "abc" で始まる任意の文字列に一致します(例: "abcde", "abc123")
$ 文字列の終わりを表します。 abc$ は "abc" で終わる任意の文字列に一致します(例: "xyzabc", "123abc")
? 直前の文字またはグループが0回または1回現れることを表します ab?c は "ac" または "abc" に一致します。
* 直前の文字またはグループが0回以上現れることを表します。 ab*c は "ac", "abc", "abbc", "abbbc", などに一致します。
+ 直前の文字またはグループが1回以上現れることを表します。 ab+c は "abc", "abbc", "abbbc", などに一致しますが、"ac" には一致しません。
. 任意の一文字を表します(改行文字を除く) a.c は "abc", "a1c", "a!c", などに一致します。
| OR 条件を表し、左右のパターンのどちらかに一致することを示します。 abc|xyz は "abc" または "xyz" に一致します。
{} 直前の文字またはグループが特定の回数現れることを表します。 a{3} は "aaa" に一致します。 a{2,4} は "aa", "aaa", "aaaa" に一致します。
\ エスケープ文字で、特殊文字を文字そのものとして認識させるために使用されます。 \. は文字列中の "." に一致します。
[] 文字の集合または範囲を表します [abc] a、b、cいずれか1文字。[a-z] 範囲指定(半角英小文字)

こちらもおすすめ