wcmatch (AutoLISP)

ワイルドカードを使用して、文字列のパターン マッチングを行います。

サポートされているプラットフォーム: Windows および Mac OS

構文と要素

(wcmatch str pattern)
str

タイプ: 文字列

比較する文字列値。比較では大文字と小文字が区別されるので、大文字と小文字が一致していなければなりません。

pattern

タイプ: 文字列

str とマッチングするパターン。pattern 引数には、次の 「ワイルドカード文字」の表にあるワイルドカード パターン マッチング文字を含めることができます。パターン内でカンマを使用することにより、複数のパターン条件を入力することができます。strpattern の先頭の約 500 文字のみが比較され、それ以降は無視されます。

戻り値

タイプ: 文字列または nil

strpattern がマッチした場合、wcmatch 関数は T を返します。それ以外の場合は、nil を返します。

ワイルド カード文字

文字

定義

# (シャープ記号)

1 つの数字にマッチします

@ (アット記号)

1 つのアルファベット文字にマッチします

. (ピリオド)

1 つの非英数字にマッチします

* (アスタリスク)

空文字列を含む任意の文字シーケンスにマッチし、検索パターンの先頭、中間、末尾のどこにでも使用できます。

? (クエスチョン マーク)

任意の 1 文字にマッチします

~ (ティルダ)

パターンの先頭の文字の場合、パターン以外の任意の文字にマッチします

[...]

囲まれた文字のいずれか 1 文字にマッチします

[~...]

囲まれた文字以外の 1 文字にマッチします

- (ハイフン)

角括弧内で使用され、文字の範囲を指定します

, (カンマ)

2 つのパターンを区切ります

` (逆クォーテション)

特殊文字をエスケープします(次の文字を文字どおりに読みます)

注意

どちらの引数にも、クォーテーションで囲まれた文字列、または文字列変数を使用できます。これは、変数や AutoLISP 関数が返す値を strpattern に使用する場合にも該当します。

文字列内のワイルドカード文字をテストするために、逆クォーテーション(`)を使用して文字をエスケープできます。エスケープとは、逆クォーテーションの次の文字がワイルドカードとして読み込まれないということを意味し、文字どおりに比較されます。たとえば、文字列 "Name" 内にカンマが存在するかどうかを検索するには、次のように入力します。

(wcmatch "Name" "*`,*")
nil

C や AutoLISP プログラミング言語では、円記号(¥)はエスケープ文字として使用されるので、文字列内で 1 つの円記号を作成するには 2 つの円記号(¥¥)が必要です。文字列 "Name" 内に円記号が存在するかどうかを調べるには、次のように関数を呼び出します。

(wcmatch "Name" "*`\\*")
nil

括弧内のすべての文字([ . . . ])は文字どおりに読み取られるので、エスケープする必要はありません。ただし、例外もあります。ティルダ文字(~)は括弧で閉じられた文字の先頭にない場合(例 "[A~BC]")には文字どおりに読み取られ、先頭にある場合は否定文字として読み取られます。これは、ティルダの後の文字以外のすべての文字が条件を満足するということです(例 "[~ABC]")。ハイフン(-)は括弧内の先頭および最後にある場合や(例 "[–ABC]""[ABC–]")、先頭のティルダの次にある場合(例 "[~‑ABC]")は文字どおりに読み取られます。それ以外の場合、ハイフン(-)は文字の範囲を指定するために使用されます。範囲は 1 文字についてのみ有効なので、"STR[1-38]"STR1STR2STR3STR8 にマッチし、"[A-Z]" は 1 つの大文字のアルファベットにマッチします。

右角括弧(])も、それが角括弧で囲まれた最初の文字である場合、および先頭のティルダの次にある場合("[ ]ABC]""[~]ABC]")は、文字どおりに読み取られます。

注: 今後の AutoLISP のバージョンでワイルドカード文字が追加される可能性があるので、パターン内のすべての非英数字をエスケープして上位互換性を保証するとよいでしょう。

次のコマンドは、文字列が文字 N で始まるかどうかを調べています。

(wcmatch "Name" "N*")
T

次の例は、3 つの比較を行います。3 つのパターン条件のいずれかを満足すると、wcmatch 関数は T を返します。テストは次の 3 つです。

この 3 つの条件のいずれかを満足している場合、wcmatch 関数は T を返します。

(wcmatch "Name" "???,~*m*,N*")
T

上記の例では、最後の条件を満足しているので、wcmatch 関数は T を返します。