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オブジェクトを利用できるようになります。
メタ文字 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] 範囲指定(半角英小文字) |