LIKE による文字列マッチの記述方法
エクセルマクロにおける変換処理では、LIKE を利用できます。
LIKE における文字列マッチについて解説します。
基本的な構文
式 Like パターン
ワイルドカード文字
基本的なワイルドカード
*
: 0個以上の任意の文字?
: 任意の1文字#
: 任意の1桁の数字(0-9)
文字クラス
[chars]
: 指定した文字のいずれか1文字[!chars]
: 指定した文字以外の1文字
よく使うパターン例
前方一致
"ABC*"
"ABC"で始まる文字列に一致
後方一致
"*XYZ"
"XYZ"で終わる文字列に一致
部分一致
"*検索語*"
"検索語"を含む文字列に一致
文字数指定
"???"
3文字の任意の文字列に一致
"####"
4桁の数字に一致
文字クラスの使用
"[ab]*"
aまたはbで始まる文字列に一致
"*[!xyz]*"
x、y、zのいずれも含まない文字列に一致
複合パターン
"??##*"
最初の2文字が任意の文字、次の2文字が数字、その後は任意の文字列
"[A-Z]###"
大文字アルファベット1文字の後に3桁の数字が続く文字列に一致
"*[!0-9]*"
数字以外の文字を少なくとも1つ含む文字列に一致
注意点
大文字・小文字の区別
- デフォルトでは区別しません
Option Compare Binary
を使用すると区別します
エスケープ
[]
や*
などの特殊文字を検索する場合は、[]
で囲みます- 例:
[*]
は文字としての*
に一致
制限事項
- 正規表現のような高度なパターンマッチングはできません
- OR条件(
|
)は使用できません
正規表現との比較
LIKE の利点
- シンプルで理解しやすい
- 基本的なパターンマッチングに十分
- Mac環境でも使用可能
LIKE の制限
- 複雑なパターンに対応できない
- 文字の繰り返し回数を指定できない
- グループ化ができない
- 後方参照ができない