like 演算子
like 演算子を使用して、ストリングと正規表現を比較します。like とともに使用できる正規表現は、ワイルドカードとエスケープ文字を使用できます。like 演算子は、SQL の LIKE キーワードに似ています。
より強固な正規表現について詳しくは、『matches 演算子』を参照してください。
この演算子は、左から右へ文字ごとに比較を行い、以下のいずれかの条件に一致したときに終了します。
- ソース・ストリング内の文字が正規表現内の位置に一致しない (比較は false)。
- 一方のストリングは終わったが、他方は終わっていない (比較は false)。
- 両方のストリングが終了する (比較は true)。
構文

- string
- 正規表現と比較するストリング変数。
- regEx
- string と比較する正規表現。正規表現は、DBCHAR を除く、STRING と代入の互換性があるリテラルまたは変数になります。 (EGL では、2 バイトのワイルドカード文字を認識できません)。 詳しくは、このトピック内の「正規表現の規則」を参照してください。
正規表現の規則
like 演算子を使用した正規表現には、以下のいずれかの特殊文字を組み込むことができます。
- %
- ワイルドカードとして機能し、ソース・ストリング内のゼロ個以上の文字に一致します。
- _ (アンダースコアー)
- ワイルドカードとして機能し、ソース・ストリング内の単一の文字に一致します。
- ¥ (円記号)
- 次の文字をソース・ストリング内の単一の文字と比較するよう指示します。 円記号 (¥) は、通常の処理から除外されるので、エスケープ文字 と呼ばれます。このエスケープ文字はソース・ストリング内のいずれの文字とも比較されません。 通常、このエスケープ文字は、% 記号、アンダースコアー (_)、またはもう 1 つの円記号の前に置かれます。
- 円記号を (デフォルトの振る舞いどおりに) エスケープ文字として使用すると、 EGL は同じエスケープ文字を使用して任意のテキスト式内への二重引用符の組み込みを許可するので、問題が起きます。 実行時に使用可能なテキストは、最初の円記号を除いたテキストであるため、正規表現のコンテキストでは 2 つの円記号を指定する必要があります。 この問題を回避するために、このトピック内の『例』に示すように、escape キーワードを使用して別の文字をエスケープ文字として指定してください。二重引用符 (") をエスケープ文字として使用することはできないことに注意してください。
それ以外の正規表現内の文字はすべてリテラルであり、ソース・ストリング内の単一の文字と比較されます。
例
以下は、正規表現でワイルドカードを使用した例です。
myVar01 = "abcdef";
// TRUE と評価されます
if (myVar01 like "a_c%")
;
end
以下に、エスケープ文字の使用例を示します。
二重の円記号の使用法に注目してください。
myVar01 = "ab%def";
// true と評価されます
if (myVar01 like "ab¥¥%def")
;
end
次の例では、escape キーワードを使用して、正符号を正規表現のエスケープ文字にします。
myVar01 = "ab%def";
// true と評価されます
if (myVar01 like "ab+%def" escape "+")
;
end
like 演算子では、
両方のオペランドで末尾ブランクは無視されます。
// true と評価されます
if ("hello " like "hello ")
;
end