VBA で正規表現を使う(RegExp オブジェクト)
2018/03/24
RegExp オブジェクト
VBA で正規表現を使うには、VBScript のRegExp オブジェクトを使用します。
RegExp オブジェクトを使うには、CreateObject 関数を利用するか、参照設定で「Microsoft VBScript Regular Expressions 5.5」にチェックを付けます。参照設定の方法については、ファイルシステムオブジェクト(FileSystemObject)の使い方 を参照してください。
<参照設定>
Dim re As RegExp
Set re = New RegExp
<CreateObject 関数を使用>
Dim re As Object
Set re = CreateObject(“VBScript.RegExp”)
RegExp オブジェクトのプロパティ、メソッドの詳細、使用例に関しては、
VBA で正規表現を使う(RegExp オブジェクトのプロパティ)
VBA で正規表現を使う(RegExp オブジェクトのメソッド)
を参照してください。
RegExp オブジェクトのパターン文字列として使用できるメタ文字
| シンボル | 機能 |
| 位置マッチング … 文字の始まりや終わりを検索します。 | |
| ^ | 文字列の先頭にのみマッチします。 |
| $ | 文字列の末尾にのみマッチします。 |
| \b | 任意の単語の境界にマッチします。 |
| \B | 単語の境界以外にマッチします。 |
| リテラルの検索 … 文字の前に “\” を置きます。 | |
| 英数字 | 英字と数字に文字どおりにマッチします。 |
| \n | 改行にマッチします。 |
| \f | フォーム フィードにマッチします。 |
| \r | キャリッジ リターンにマッチします。 |
| \t | 水平タブにマッチします。 |
| \v | 垂直タブにマッチします。 |
| \? | ? にマッチします。 |
| \* | * にマッチします。 |
| \+ | + にマッチします。 |
| \. | . にマッチします。 |
| \| | | にマッチします。 |
| \{ | { にマッチします。 |
| \} | } にマッチします。 |
| \\ | \ にマッチします。 |
| \[ | [ にマッチします。 |
| \] | ] にマッチします。 |
| \( | ( にマッチします。 |
| \) | ) にマッチします。 |
| \xxx | 8進数 xxx によって表現されるASCII文字にマッチします。 |
| \xdd | 16進数 dd によって表現されるASCII文字にマッチします。 |
| \uxxxx | UNICODE xxxx によって表現されるASCII文字にマッチします。 |
| 文字クラス | |
| [] | [] 内に含まれている文字にマッチします。 |
| [^] | [^] に含まれていない文字にマッチします。 |
| . | \n 以外の任意の文字にマッチします。 |
| \w | 単語に使用される任意の文字にマッチします。[a-zA-Z_0-9]と等価。 |
| \W | 単語に使用される文字以外の任意の文字にマッチします。[^a-zA-Z_0-9]と等価。 |
| \d | 任意の数字にマッチします。[0-9]と等価。 |
| \D | 任意の数字以外の文字にマッチします。[^0-9]と等価。 |
| \s | 任意のスペース文字にマッチします。[ \t\r\n\v\f]と等価。 |
| \S | 任意の非スペース文字にマッチします。[^ \t\r\n\v\f]と等価。 |
| 繰り返し | |
| {n} | 正規表現のちょうど n個の直前の文字にマッチします。 |
| {n,} | 正規表現のn個以上の直前の文字にマッチします。 |
| {n1,n2} | 正規表現のn1個以上、n2個以下の直前の文字にマッチします。 |
| ? | ゼロ個または1個の直前の文字にマッチします。{0,1}と等価。 |
| * | ゼロ個以上の直前の文字にマッチします。{0,}と等価。 |
| + | 1個以上の直前の文字にマッチします。{1,}と等価。 |
| 選択とグループ化 | |
| () | 複数の句をグループ化して、1つの句を作成します。ネストすることができます。 |
| | | 選択は、複数の句を1つの正規表現にまとめ、これらのうちの任意の句にマッチします。 |
| 後方参照 | |
| ()\n | n番目の括弧で囲まれた句にマッチします。 |
VBAで正規表現を使用する例
サンプルVBAソース
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Sub Sample_RegExp() Dim re As RegExp Dim i As Long Dim mystr As String Dim str(1 To 5) As String Set re = New RegExp str(1) = "12345abcd" str(2) = "あいうえおかきく" str(3) = "123456XYZ" str(4) = "00865eerrU" str(5) = "id_password" re.Pattern = "^[a-z0-9_]+$" For i = 1 To 5 mystr = mystr & vbCrLf & _ str(i) & vbTab & re.Test(str(i)) Next i MsgBox mystr End Sub |
実行結果
関連記事
-
-
セルのデータを区切り文字で複数のセルに分割する(TextToColumns メソッド)
TextToColumns メソッド TextToColumns メソッドを使用 …
-
-
文字列:文字列の空白を削除(Trim 関数, LTrim関数, RTrim関数)
Trim 関数・LTrim 関数・RTrim 関数の使い方 【書式】 <先頭と末 …
-
-
オートシェイプの種類を表す定数(MsoAutoShapeType 列挙型)
MsoAutoShapeType 列挙型 オートシェイプオブジェクトの図形の種類 …
-
-
日付時刻:文字列から日付・時刻データを取得( DateValue 関数、TimeValue 関数 )
DateValue 関数(文字列から日付データを取得) 【書式】 date_va …
-
-
日付時刻:現在の日付・時刻を取得・設定(Now、Date、Time)
現在の日付・時刻を取得・設定 現在の日付・時刻を取得(Now 関数、Date 関 …
-
-
文字列:指定した文字コードに対応する文字を返す(Chr 関数)
Chr 関数の使い方 【書式】 result = Chr ( code ) 引数 …
-
-
引数の整数部分を取得する(Fix 関数・Int 関数)
Fix 関数・Int 関数の使い方 【書式】 number_fix = Fix …
-
-
文字列:指定した文字の文字コードを取得する(Asc 関数)
Asc 関数 【書式】 result = Asc ( string ) 引数・戻 …
-
-
指定した文字列を数値に変換する(Val 関数)
Val 関数 の使い方 Val 関数は、指定した文字列に含まれる数字を数値として …
-
-
文字列:定数(改行・タブ)
改行・タブの定数 これらの定数は、使用前に定義する必要はありません。コード中のど …
