matches 演算子

論理式の中で、ストリング式を別の (match 基準 と呼ばれる) ストリングと、文字位置ごとに左から右へ比較することができます。 この機能の用途は、UNIX® または Perl における正規表現 の用途によく似ています。

以下に例を示します。

  // 変数 myVar01 はストリング式である
  // その内容が match 基準と比較される
  myVar01 = "abcdef";

  // 次の論理式は「真」へと評価される
  if (myVar01 matches "a?c*")
    ;
  end

match 基準は、リテラル、CHAR 型または MBCHAR 型の項目、UNICODE 型の項目のいずれかにすることができます。 match 基準の中には、以下の文字を組み込むことができます。

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

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

^
ワイルドカードの規則を作成し、キャレット (^) が大括弧の区切り文字内で最初の文字ならば、区切り文字以外の任意の文字が、ストリング式内の次の文字の一致として有効となります。 例えば、次の match 基準のコンポーネントは、a、b、c を除く任意の文字が一致として有効であることを示します。
  [^abc]
キャレットは、次の場合には特別な意味を持ちません。
  • 大括弧の区切り文字の外部にある場合
  • 大括弧の区切り文字の内部にあっても、先頭の文字でない場合
¥
次の文字をストリング式内の単一の文字と比較するよう指示します。 円記号 (¥) は、通常の処理から外れるので、エスケープ文字 と呼ばれます。このエスケープ文字はストリング式内の任意の文字とも比較されません。

通常、このエスケープ文字は、例えばアスタリスク (*) や疑問符 (?) など、エスケープ文字がないと match 基準内で別の意味になる文字の前に置かれます。

円記号を (デフォルトの振る舞いどおりに) エスケープ文字として使用した場合、EGL は同じエスケープ文字を使用して任意のテキスト式内への引用符の組み込みを許可するので、問題が起きます。 match 基準の内容においては、2 つの円記号を指定する必要があります。実行時に使用可能なテキストは、最初の円記号を除いたテキストだからです。

この問題を回避することをお勧めします。 後で例を示すように、escape 文節を使用することにより、別の文字をエスケープ文字として指定してください。 ただし、二重引用符 (") をエスケープ文字として使用することはできません。

それ以外の matchCriterion 内の文字は、すべてリテラルであり、ストリング式 内の単一の文字と比較されます。

次の例は、escape 文節の使用方法を示しています。
  // 変数 myVar01 はストリング式である
  // その内容が match 基準と比較される
  myVar01 = "ab*def";

  // 次の論理式は「真」へと評価される
  if (myVar01 matches "ab¥¥*[abcd][abcde][^a-e]")
    ;
  end

  // 次の論理式は「真」へと評価される
  if (myVar01 matches "ab+*def" escape "+")
    ;
  end

関連リファレンス
EGL 文
論理式
テキスト式

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.