@Matches (式言語)

指定の文字列に指定のパターン文字列があるかどうかを判断します。パターン文字列には多数の「ワイルドカード」文字や論理記号を使用できるため、複雑な文字パターンを照合できます。

構文

@Matches( string ; pattern )

パラメータ

string

文字列または文字列リスト。検索対象の文字列を引用符で囲んで指定します。検索対象の文字列が含まれているフィールドの名前を入力することもできます。フィールド名は引用符で囲まないでください。

pattern

文字列または文字列リスト。string 内で検索するパターンを引用符で囲んで指定します。ワイルドカード文字と記号を使用することもできます (下表参照)。パターンがセットとして中括弧で囲まれている場合を除き、?、*、&、!、|、¥、+ の記号の前には円記号を付ける必要があります。パターンをリテラルとして指定する場合は、記号の前に円記号を 1 つではなく 2 つ付ける必要があります。円記号は文字列リテラルではエスケープ文字であるため、「¥?」と指定すると照合エンジンには「?」が渡され、ワイルドカードとして処理されます。「¥¥?」と指定すると照合エンジンには「¥?」が渡され、疑問符文字として処理されます。

注: パターン内の単純な文字は、大文字と小文字が区別されません。中カッコで囲まれた文字は、正確に一致する必要があり、大文字と小文字が区別されます。文字セット {A-z} には、大文字と小文字のアルファベットだけでなく、円記号、アンダースコア、括弧の文字が含まれます。

戻り値

flag

Boolean 型

ワイルドカード文字と論理記号は次のとおりです。

記号

使い方

C

C は任意の文字。特殊文字以外の任意の 1 文字と一致します。

?

任意の 1 文字と一致します。

*

任意の文字列 (複数の文字) と一致します。

{ABC}

ABC というセットの中の文字のいずれかと一致します。

{A-FL-R}

A から F と L から R というセットの中の文字のいずれかと一致します。

+C

任意の回数繰り返される C (または c) に一致します。

!

パターンの論理的な意味を否定します (論理 NOT)。

|

2 つのパターンの論理 OR をとります。

&

2 つのパターンの論理 AND をとります。

注: セットを指定するときは、必ず { } (中括弧) で囲んでください。例えば、A から F の文字のセットは {A-F} と指定します。

パターン一致の例を示します。

パターン

一致

ABC

3 文字の文字列 [a|A][b|B][c|C]。

{ABC}{ABC}

大文字 A、B、または C からなる 2 文字の文字列

A?C

a または A で始まり、c または C で終わる任意の 3 文字の文字列。

???

任意の 3 文字の文字列

+?

Null 文字列を含む任意の文字列

+?{A-Z}

大文字で終了する任意の文字列

+{!A-Z}

大文字を含まない任意の文字列

使用法

最初または 2 番目のパラメータがリストである場合、2 番目のパラメータ内のいずれかの要素が最初のパラメータ内のいずれかの要素と一致すると、この関数は true を返します。

  1. 次の例では、0 が返されます。
    @Matches("A big test";"a?test")
  2. 次の例では、1 が返されます。
    @Matches("A big test";"a?????test")
  3. 次の例では、[State] フィールドの内容が小文字に変換され、その値に「mont」が含まれる場合は 1 が返されます (Vermont や Montana など)。
    @Matches(@Lowercase(State);"*mont*") 
  4. 次の例は、[SalesNumber] というフィールドのデフォルトの式です。この式では、[Division] フィールドの内容が Central か Midwest のいずれかの場合は、数値 224 が返されます。[Division] の内容がそれ以外の場合は、数値 124 が返されます。
    @If(@Matches(Division;"Central | Midwest");224;124)
  5. 次のコードを [input] という数値フィールドの入力確認式として追加すると、ユーザーが大文字または小文字の A から Z のいずれかの文字を入力したときに「Value cannot be a letter」というエラーメッセージが表示されます。
    @If(@Matches(@Text(input);"+{!A-z}");@Success;@Failure("Value cannot be a letter"))
    注: このエラーメッセージは、ユーザーが円記号、アンダースコア、またはカッコを入力したときも表示されます。これは、A-z によって大文字の A と小文字の z の間のすべての ASCII 文字が指定されるためです。円記号、アンダースコア、カッコはこの文字のセットに含まれます。
  6. このコードを編集可能文字列の [US_State] フィールドに対する入力確認式として追加すると、ユーザーが入力した値が大文字の英字 2 文字でない場合は「Entry must be a valid two-letter state abbreviation」というエラーメッセージが表示されます。
    @If(@Matches(US_State;"{A-Z}{A-Z}");@Success;@Failure("Entry must be a valid two-letter state abbreviation"))
  7. 次の例では、2 番目のリストのどのアイテムも最初のリストのアイテムと一致しないため、0 が返されます。
    @Text(@Matches("one" : "two" : "three"; "four" : "five" : "six"))
  8. 次の例では、2 番目のリストの 1 つのアイテムが最初のリストのアイテムと一致するため、1 が返されます。
    @Text(@Matches("one" : "two" : "three"; "three" : "four" : "five" : "six"))

クロスリファレンス

LotusScript® 言語の Like 演算子