「ワイルドカード (情報処理)」の版間の差分

編集の要約なし
コンピュータなどの関連において、'''ワイルドカード'''は、[[検索]]など[[グロブ]]の際に指定するパターンに使用する[[特殊文字]]の種類で、どんな対象文字、ないし文字列にもマッチするもののことである。[[カードゲーム]]の[[ワイルドカード (トランプ)|ワイルドカード]]に由来する呼称。
 
[[UNIX]]の[[Unixシェル|シェル]]では、「<code>?</code>」([[疑問符]])を[[任意]]の一文字、「<code>*</code>」([[アスタリスク]])を長さ0文字以上の任意の文字列にマッチするパターンとして、コマンドライン上で、存在するファイルの名前に対して展開される(たとえば ac abc abd というファイルがある場合、cat a*c とコマンドを入力すると、cat abc ac のように展開されたうえで、cat プログラムが起動される)
 
たとえば <code>sales-201712.xlsx<code>、<code>sales-201801.txt</code>、<code>sales-201802.txt</code> というファイルがある場合、
[[MS-DOS]]やその衣鉢を継いだ[[Microsoft Windows]]では、シェルはそのような展開を行わず、ワイルドカードはプログラムのプロセスにそのまま渡される。[[COMMAND.COM]]の内部コマンドにおける解釈では、ファイル名の途中で * があると、そこから拡張子のピリオドまでマッチをすっ飛ばし、全てマッチしたものとみなすので、FOO*BAR というパターンは FOO* と全く同じ意味である。また、REN *.TXT *.BAK といったようなコマンドに対しては{{仮リンク|DWIM|en|DWIM}}的な挙動をする。
 
vi sales-2018*.txt
[[SQL]]のWHERE句におけるLIKE predicate中のパターンでは、長さ0文字以上の任意の文字列が「%」、任意の一文字が「_」である。
 
コマンドを入力すると、
 
vi sales-201801.txt sales-201802.txt
 
のように展開されたうえで、<code>vi</code> プログラムが起動される。
 
[[MS-DOS]]やその衣鉢を継いだ[[Microsoft Windows]]では、シェルプログラム <code>[[COMMAND.COM]]</code> でのような展開を行わず、ワイルドカードはプログラムのプロセスにそのまま渡される。[[<code>COMMAND.COM]]</code> の内部コマンドにおける解釈では、ファイル名の途中で <code>*</code> があると、そこから拡張子のピリオドまでマッチをすっ飛ばし、全てマッチしたものとみなすので、<code>FOO*BAR</code> というパターンは <code>FOO*</code> と全く同じ意味である。また、<code>REN *.TXT *.BAK</code> といったようなコマンドに対しては{{仮リンク|DWIM|en|DWIM}}的な挙動をする。
 
[[SQL]]の <code>WHERE</code> 句における <code>LIKE predicate</code> 中のパターンでは、長さ0文字以上の任意の文字列が「<code>%</code>」、任意の一文字が「<code>_</code>」である。
 
[[正規表現]]における[[クリーネ閉包]]とは似て非なるものであり混同してはいけない。