【わいるどかーど】

ワイルドカード とは?

最終更新:
💡 一部をまとめて指定する記号。記法と範囲は文脈次第

パターンの中で、文字や文字列の範囲をまとめて指定する特殊な記号。使う記号と一致する範囲は、シェルのファイル名展開、SQLのLIKE、TLS証明書などの仕組みによって異なる。

📌 このページのポイント
POSIXシェルの例*:0文字以上*.txtmemo.txt ○data.txt ○file10.txt ○?:1文字file?.txtfile1.txt ○fileA.txt ○file10.txt ×先頭ドット・/ などには別の条件SQLのLIKEは %・_ / TLSは別の照合規則
ワイルドカードの記法や範囲は、使う仕組みごとに確認する。ここではPOSIXシェルのファイル名パターンを例示。
ひよこ ひよこ
*と?はどう使い分けるの?
ペンギン先生 ペンギン先生
POSIXのシェルのパターンなら、*は0文字以上、?は1文字に一致するよ。たとえば*.txtはmemo.txtなど、file?.txtはfile1.txtなどに合う。ただしファイル名展開では、階層区切りの/や先頭のドットを何でも含めるわけではないよ。
ひよこ ひよこ
SQLでも*で名前を探すの?
ペンギン先生 ペンギン先生
LIKEで文字列を探すなら、%が0文字以上、_が1文字を表すよ。name LIKE '山%'なら「山」で始まる名前を探す例だね。SELECT *は全列を選ぶ指定で、文字列に一致するパターンとは役割が違うんだ。
ひよこ ひよこ
*.example.comの証明書なら全部に使える?
ペンギン先生 ペンギン先生
TLSの名前照合では、www.example.comやapi.example.comのように左端の1階層に合うよ。a.b.example.comや、階層を足していないexample.comには、この指定だけでは合わない。DNSのワイルドカードの規則とも区別しよう。
ひよこ ひよこ
正規表現の*とは同じ?
ペンギン先生 ペンギン先生
正規表現では通常、*は直前の要素の0回以上の繰り返しを表すよ。任意の文字を表すドットと組み合わせた.*などの記法になるけれど、改行などの扱いは設定にもよる。シェルの*.txtをそのまま正規表現として使わないようにしよう。
ひよこ ひよこ
まとめて操作するときは何に注意するの?
ペンギン先生 ペンギン先生
使うツールの記法を確認し、まず対象を一覧で確かめよう。スペースや引用符の違いで、渡される引数や展開範囲が変わることがある。検索と削除などの操作を区別して、意図した名前だけに一致するか確認してから実行するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ワイルドカード」って出てきたら「名前などの一部をまとめて指定する特殊な記号」と思えばだいたいOK!
📖 おまけ:英語の意味
「Wildcard」 = 任意のものに当てはめる記号
💬 どこまで一致するかは使う仕組みの規則次第だよ。同じ*でも、シェル・正規表現・証明書で同じ意味になるわけではないんだ。

参考資料

← 用語集にもどる