ITパスポート 2018年 春期 問85
問題文
ワイルドカードを使って“A.te??”の表現で文字列を検索するとき、①〜④の文字列のうち、検索条件に一致するものだけを全て挙げたものはどれか。ここで、ワイルドカードの“?”は任意の1文字を表し、“*”は0個以上の任意の文字から成る文字列を表す。
① A.text
② AA.tex
③ B.Atex
④ BA.Btext
選択肢
ア:①(正解)
イ:①、②
ウ:②、③、④
エ:③、④
🔒 解説は解答すると表示されます
ワイルドカード "A.te??" での検索一致【ITパスポート 解説】
正解の理由
パターン "A.te??" は順に、先頭の
*(任意の0文字以上)→A(文字 'A')→次の *(任意の0文字以上)→.(ピリオドはそのままの文字)→t e(文字列 "te")→? ?(それぞれ任意の1文字、合計2文字)を要求します。つまり「どこかに 'A' があり、その後にピリオドと 'te' が続き、さらにその後にちょうど2文字がある」文字列がマッチします。与えられた候補のうち、この条件を満たすのは ① の "A.text" のみです。したがって選択肢 ア(①)が正しい理由になります。解法ステップ
- ワイルドカードの意味を確認する
?は「任意の1文字」を表す。*は「任意の0文字以上の文字列」を表す。
- パターンを分解する
"A.te??" は次の順で要求する:任意の文字列 → 'A' → 任意の文字列 → '.' → 't' → 'e' → 任意の1文字 → 任意の1文字。 - 各候補をパターンにあてはめて確認する
- 「.te??」の部分は「ピリオド + 'te' + ちょうど2文字(合計5文字)」で終わる必要があることに注意する。
- 候補の末尾が ".te" の後に2文字あるか、そしてその ".te" の前に 'A' が存在するかをチェックする。
選択肢別の誤答解説
- ア: ①
- ① "A.text" は先頭の
*が空文字に対応して 'A' が先頭に来ます。続く*が空でもよく、末尾は ".text" で ".te" の後に "xt" の2文字があるので条件を満たします。よって一致します。
- ① "A.text" は先頭の
- イ: ①、②
- ② "AA.tex" は末尾が ".tex" で、".te" の後に
xが1文字しかありません。??が2文字を要求するため不一致です。したがって②は誤りです。
- ② "AA.tex" は末尾が ".tex" で、".te" の後に
- ウ: ②、③、④
- ② は上記の通り不一致です。
- ③ "B.Atex" は ".Atex" のようにピリオドの直後が 'A' であり、ピリオド直後に 't' 'e' が来ていないため ".te" の部分が満たされません。
- ④ "BA.Btext" はピリオド直後が 'B' で、ピリオドの直後に 't' 'e' が続いていないため不一致です。
- エ: ③、④
- ③・④ いずれも、パターンで要求される「ピリオドの直後に 't' 'e' が来て、そのあとに2文字」が満たされないため、どちらも不一致です。
よくある誤解
- 「ピリオド(.)はワイルドカードで何でも表す」と思う誤解
- 正しくは、この問題のワイルドカード仕様では
.は普通の文字(ピリオドそのもの)です。正規表現(regex)では.が任意の1文字を表しますが、今回のルールとは別物です。
- 正しくは、この問題のワイルドカード仕様では
*が必ず1文字以上マッチすると考える誤解*は0文字でもマッチします。つまりAの直後にすぐピリオドが来ても問題ありません。
?は「0〜1文字」だと思う誤解?は必ず1文字を表します。0文字は許されません。
補足コラム
ワイルドカード(glob とも呼ばれます)はファイル名検索や簡易的なパターンマッチでよく使われます。注意点として、ワイルドカードの意味は使う場面によって微妙に違うことがあります。たとえば:
- シェルのファイル名展開(bash等)では、ドット(.)で始まる隠しファイルは
*ではマッチしない設定が一般的です(特殊扱い)。 - 正規表現(regex)はより強力で、
.が任意1文字、*は直前の文字の0回以上の繰り返しを表すなど、別ルールです。
覚え方のコツ:
? は「1つだけの穴」、* は「たくさんの穴(0個も可)」とイメージすると判別しやすいです。FAQ
Q1. 「A.te??」で先頭の
A1. 先頭の
* を省略しても同じですか?A1. 先頭の
* を省くと、文字列は必ず先頭が 'A' で始まらなければなりません。* があると先頭に何があってもよい、つまりより広い範囲を表します。Q2.
A2. 許されません。
? が2つ続いている場合、2文字以上は許されますか?A2. 許されません。
? ? は「ちょうど2文字」を意味します。2文字より多い場合はその分はマッチしません(別の * が必要)。Q3. ワイルドカードは大文字・小文字を区別しますか?
A3. 多くの実装では区別します("A" と "a" は別)。ただし環境によっては大文字小文字を区別しない設定もあるため、使う場面の仕様を確認してください。
A3. 多くの実装では区別します("A" と "a" は別)。ただし環境によっては大文字小文字を区別しない設定もあるため、使う場面の仕様を確認してください。
関連キーワード: ワイルドカード、ワイルドカード検索、パターンマッチ、glob、ワイルドカードと正規表現の違い

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

