問題
問99
ワイルドカードに関する次の記述中のa,bに入れる字句の適切な組合せはどれか。
任意の1文字を表す“?”と、長さゼロ以上の任意の文字列を表す“*”を使った文字列の検索について考える。「a」では、“データ”を含む全ての文字列が該当する。また、「b」では、“データ”で終わる全ての文字列が該当する。

[出典:ITパスポート試験 令和元年度 問99]
スポンサーリンク
正解
正解は「エ」です。
解説
この問題は、ワイルドカードの使い方に関する基礎知識を問うものです。
まずaについて考えます。
「データ」を含む全ての文字列に該当するパターンを作るには、任意の文字列が前後につながる可能性を考慮する必要があります。そのため「*データ*」が正解です。
一方、bについては「データで終わる」文字列を対象としています。末尾に「データ」が来るため、前に任意の文字列がある可能性を考慮して「*データ」が適切です。先頭にワイルドカードを使い、最後に固定の「データ」がある形になります。
たとえば「営業データ」や「顧客データ」など、前に違う単語があっても最後が「データ」で終わるものは「*データ」で一致します。
このように、ワイルドカード「*」は非常に自由度が高く、柔軟な検索に使えるため、文字列検索の場面では非常に重要な役割を果たします。今回の正しい組み合わせは、「a=*データ*」、「b=*データ」であり、選択肢「エ」が正解となります。
- ア(?データ*):
「?」は任意の1文字だけを表すため、「データ」を含む全ての文字列を対象にするには不十分です。 - イ(?データ* *データ):
aの「?データ*」が不適切です。「?」は1文字のみのため、「データ」を含む全体の検索には合いません。 - ウ(*データ* ?データ):
bの「?データ」では「データ」で終わる条件を満たせません。先頭が1文字固定されてしまうからです。
難易度
この問題の難易度は「普通レベル」です。ワイルドカードの「?」と「*」の違いを正しく理解していれば十分対応できますが、実際にプログラミングや検索条件設定に触れた経験がないと、やや混乱する可能性もあります。特に「?」が1文字限定である点を忘れないようにすることがポイントです。
スポンサーリンク
用語補足
ワイルドカード:
文字列検索時に、任意の文字列や任意の文字を表す記号です。よく使われるのは「*」(ゼロ文字以上)と「?」(ちょうど1文字)です。
*(アスタリスク):
0文字以上の任意の文字列を表します。例えば「*データ*」と書くと、「営業データ」も「顧客データファイル」も対象になります。
?(クエスチョンマーク):
任意の1文字だけを表します。例えば「デー?タ」なら「データ」や「デーメタ」など1文字だけ違うものが対象になります。
対策
ワイルドカードの「*」と「?」の使い分けを確実に覚えることが重要です。問題集や過去問で繰り返し例題に取り組みながら、どちらが「1文字」か「0文字以上」かを区別できるようにしましょう。特に「*データ」「*データ*」など検索条件の応用パターンを意識して練習するのが効果的です。