ワイルドカード文字

組み込みのパターン マッチングでは、さまざまな文字列の比較が可能です。Like 演算子と共に使用できるワイルドカード文字と、一致する数字または文字列の数を次の表に示します。

引数 pattern 内の文字 引数 expression での一致
? 任意の 1 文字
* 0 個以上の文字
# 任意の 1 個の数字 (0 〜 9)
[charlist] 引数 charlist で指定した文字に含まれる任意の 1 文字
[!charlist] 引数 charlist で指定した文字に含まれない任意の 1 文字

角かっこ内 ([ ]) に 1 文字以上の文字グループ (charlist) を指定して、引数 expression 内の任意の 1 文字と一致するかどうかを調べることができます。角かっこ内には数字など、ANSI コードまたはシフト JIS コードに対応する主な文字を指定することができます。前かっこ ([ )、疑問符 (?)、シャープ記号 (#)、およびアスタリスク (*) などの特殊文字を一致させることができるのは、角かっこ内に指定した場合のみです。後かっこ ( ]) を指定して、引数 expression の中の後かっこ ( ]) と一致させることはできませんが、引数 charlist の外で指定すると、独立した文字として比較させることができます。

角かっこで囲まれた文字を列挙する方法以外に、引数 charlist では、文字コードの並びの上限と下限をハイフン (-) で区切ることによって、特定の範囲の文字を指定することもできます。たとえば、引数 pattern に [A-Z] と指定した場合、引数 expression の対応する文字位置に大文字の A 〜 Z の文字があるかどうかが調べられます。角かっこの中に複数の範囲を指定するときは、それぞれの範囲を区切らずに記述します。たとえば、[a-zA-Z0-9] と指定した場合は、任意の英数字に一致するかどうかを調べることができます。

このほか、パターン マッチングで重要な点を次に示します。

  • 引数 charlist の先頭に感嘆符 (!) を指定すると、引数 charlist 内に指定した文字以外の文字が引数 expression にあるかどうかが調べられます。感嘆符を文字として一致させるには、感嘆符を角かっこの外に指定します。

  • ハイフン (-) は、引数 charlist の先頭 (感嘆符が使用されている場合は、その後ろ)、または最後に指定することにより、ハイフン自体を文字として一致しているかどうかを調べることができます。その他の場所では、ハイフンは ANSI コードまたはシフト JIS コードに対応する文字の範囲を指定するときに使用します。

  • 文字範囲を指定するときは、A-Z、0-100 のように昇順で指定する必要があります。[A-Z] は有効なパターンですが、[Z-A] は無効です。

  • 角かっこ [ ] の中になにも指定しないと、長さ 0 の文字列 ("") とみなされ、無効になります。
Sub ワイルドカード文字()
Dim MyCheck
MyCheck = "aBBBa" Like "a*a"  ' True を返します。
Debug.Print MyCheck
MyCheck = "F" Like "[A-Z]"  ' True を返します。
Debug.Print MyCheck
MyCheck = "F" Like "[!A-Z]"  ' False を返します。
Debug.Print MyCheck
MyCheck = "a2a" Like "a#a"  ' True を返します。
Debug.Print MyCheck
MyCheck = "aM5b" Like "a[L-P]#[!c-e]"  ' True を返します。
Debug.Print MyCheck
MyCheck = "BAT123khg" Like "B?T*"  ' True を返します。
Debug.Print MyCheck
MyCheck = "CAT123khg" Like "B?T*"  ' False を返します。
Debug.Print MyCheck
End Sub