matches 演算子

matches 演算子を使用して、ストリングと正規表現を比較します。like 演算子の使用法は、UNIX や Perl での正規表現の使用法に似ています。より単純な正規表現については、『like 演算子』を参照してください。

matches 演算子は、左から右へ文字ごとに比較を行い、以下のいずれかの条件に一致したときに終了します。

構文

matches 演算子の構文図
string
正規表現と比較するストリング変数。
regEx
string と比較する正規表現。正規表現は、CHAR 型か MBCHAR 型のリテラルまたは変数、あるいは UNICODE 型の変数のいずれかにすることができます。 詳しくは、このトピック内の「正規表現の規則」を参照してください。

正規表現の規則

正規表現には、以下のいずれかの特殊文字を組み込むことができます。
*
ワイルドカードとして機能し、ストリング式内のゼロ個以上の文字に一致します。
?
ワイルドカードとして機能し、ストリング式内の単一の文字に一致します。
[ ]
大括弧で囲まれている文字のいずれか 1 つが、ストリング式内の次の文字の一致として有効となります。 例えば、次の正規表現のコンポーネントは、a、b、または c が一致として有効であることを示します。
  [abc]
-
大括弧の区切り文字の中で範囲を作成し、その範囲内にあるいずれか 1 文字がストリング式内の次の文字の一致として有効となります。 例えば、次の正規表現のコンポーネントは、a、b、または c が一致として有効であることを示します。
  [a-c]

ハイフン (-) は、大括弧の区切り文字の外部では特別な意味を持ちません。

^
キャレットを使用すると、大括弧区切り文字の意味が逆になります。 区切り文字以外の文字は、すべてストリング式内の次の文字の一致として有効となります。 例えば、次の正規表現のコンポーネントは、a、b、c を除く任意の文字が一致として有効であることを示します。
  [^abc]

キャレットは、大括弧内の先頭以外の位置では、特別な意味を持ちません。

\
次の文字をストリング式内の単一の文字と比較するよう指示します。 円記号 (¥) は、通常の処理から除外されるので、エスケープ文字 と呼ばれます。このエスケープ文字はストリング式内のいずれの文字とも比較されません。 通常、このエスケープ文字は、例えばアスタリスク (*) や疑問符 (?) など、 エスケープ文字がないと正規表現内で別の意味になる文字の前に置かれます。
円記号を (デフォルトの振る舞いどおりに) エスケープ文字として使用すると、 EGL は同じエスケープ文字を使用して任意のテキスト式内への二重引用符の組み込みを許可するので、問題が起きます。 実行時に使用可能なテキストは、最初の円記号を除いたテキストであるため、正規表現のコンテキストでは 2 つの円記号を指定する必要があります。 この問題を回避するために、このトピック内の『例』に示すように、escape キーワードを使用して別の文字をエスケープ文字として指定してください。二重引用符 (") をエスケープ文字として使用することはできないことに注意してください。

それ以外の正規表現内の文字はすべてリテラルであり、ソース・ストリング内の単一の文字と比較されます。

以下は、正規表現でワイルドカードを使用した例です。
myVar01 = "abcdef";

// TRUE と評価されます
if (myVar01 matches "a?c*")
   ;
end
以下に、エスケープ文字の使用例を示します。 二重の円記号の使用法に注目してください。
myVar01 = "ab*def";

// TRUE と評価されます
if (myVar01 matches "ab¥¥*[abcd][abcde][^a-e]")
   ;
end
次の例では、escape キーワードを使用して、正符号を正規表現のエスケープ文字にします。
myVar01 = "ab*def";

// 次の論理式は「true」に評価されます
if (myVar01 matches "ab+*def" escape "+")
    ;
end

フィードバック