【わいるどかーど】

ワイルドカード とは?

💡 「何でも当てはまる」特殊文字、パターンマッチングの万能カード
📌 このページのポイント
ワイルドカード: パターンマッチ *(アスタリスク) 0文字以上の任意の文字列に一致 *.txt → memo.txt, data.txt, a.txt test* → test1, test_data, testing ?(クエスチョン) 任意の1文字に一致 file?.txt → file1.txt, fileA.txt ?at → cat, bat, hat よく使う場面 ファイル検索 コマンドライン操作 DNS / SSL証明書 ※ 正規表現とは異なるシンプルなパターン指定方法
ワイルドカードのイメージ
ひよこ ひよこ

ワイルドカードって何?

ペンギン先生 ペンギン先生

「なんにでも当てはまる」特殊文字だよ。「*.txt」はファイル検索で「.txtで終わる全てのファイル」に一致する。コマンドラインで「ls *.jpg」と打てばJPGファイルだけ表示できる。

ひよこ ひよこ

SQLでも使うの?

ペンギン先生 ペンギン先生

SQLでは「SELECT * FROM users」の「*」が「全てのカラム」という意味のワイルドカード。また「WHERE name LIKE '山%'」の「%」も「山から始まる全ての名前」を表すワイルドカード(SQLではアスタリスクではなく%と_を使う)。

ひよこ ひよこ

ワイルドカード証明書って何?

ペンギン先生 ペンギン先生

TLS証明書でサブドメインに「*」を使ったもの。「*.example.com」の証明書なら、www.example.com・api.example.com・blog.example.comなど全サブドメインに使える。1枚の証明書で管理できて便利。

ひよこ ひよこ

正規表現の「.」とワイルドカードの「*」って同じものなの?

ペンギン先生 ペンギン先生

違うよ。シェルのワイルドカードでは「*」は「任意の文字列」に一致するけど、正規表現では「.*」と書く(「.」が任意の1文字、「*」が0回以上の繰り返し)。「*.txt」はシェルでは「.txtで終わるファイル名」だけど、正規表現ではドットをエスケープして書く必要がある。混同するとマッチしない原因になるから、今どちらの文脈にいるか意識するのが大事だよ。

ひよこ ひよこ

ワイルドカードの使い方でセキュリティ的に危険なことってある?

ペンギン先生 ペンギン先生

あるよ。「rm -rf *.log」のつもりで「rm -rf * .log」とスペースを入れてしまうと、カレントディレクトリの全ファイルが消える。ワイルドカード証明書も「*.example.com」はサブドメイン1段にしかマッチせず、「a.b.example.com」にはマッチしない。意図しない範囲にマッチしたり、マッチしないことに気づかなかったりするのが危険なポイントだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ワイルドカードって出てきたら「任意の文字や文字列に一致する特殊文字(*や?など)」と思えばOK!
📖 おまけ:英語の意味
「Wildcard」 = 切り札・万能カード
💬 トランプの「ジョーカー(どのカードにも成れる)」から転用。「どんな文字列にも一致できる」万能な特殊文字
← 用語集にもどる