基礎理論|令和元年度 秋期 ITパスポート試験(特別措置試験) 問99
ワイルドカードに関する次の記述中のa,bに入れる字句の適切な組合せはどれか。
任意の1文字を表す“?”と,長さゼロ以上の任意の文字列を表す“*”を使った文字列の検索について考える。 a では,“データ”を含む全ての文字列が該当する。また, b では,“データ”で終わる全ての文字列が該当する。
| a | b | |
|---|---|---|
| ア | ?データ* | ?データ |
| イ | ?データ* | *データ |
| ウ | *データ* | ?データ |
| エ | *データ* | *データ |
- ?データ* ?データ
- ?データ* *データ
- *データ* ?データ
- ✓ これが正解*データ* *データ
解説
含むなら前後に星印を、終わるなら前だけに星印を置きます。
ワイルドカードは、文字の代わりに置いて、あいまいなまま探すための記号です。疑問符は任意の1文字を表し、星印は長さゼロ以上の任意の文字列を表します。星印はゼロ文字でもよい、という点が要になります。この違いが答えを分けます。データという語を含む文字列をすべて拾いたいときは、前にも後ろにも何が来てもよいので、両側に星印を置きます。前が空でも後ろが空でも当たるので、データという語そのものも含めて拾えます。データで終わる文字列を拾いたいときは、前だけに星印を置きます。後ろに何も続かないという条件になるので、末尾がその語で終わるものだけが当たります。疑問符を使うと、そこにちょうど1文字あることを求めてしまい、拾える範囲がぐっと狭くなります。よって最も適切なのは、両方とも星印を前に置いた組合せです。
ほかの選択肢はなぜ違うのか
- 前を疑問符にすると、その語の前にちょうど1文字あるものしか当たりません。2文字以上前に付いたものも、何も付いていないものも、どちらも拾えなくなります。後半も末尾で終わる形になっておらず、二つの欄がどちらも外れています。
- 前半が疑問符になっているという点が外れています。含むという条件は、前に何文字が来てもよい、という意味なので、星印でなければなりません。後半の書き方のほうは、末尾がその語で終わるものを拾う形として正しくなっています。
- 前半の書き方は、語の両側に星印を置いているので正しい形です。しかし後半の書き方は疑問符になっているため、前にちょうど1文字あるものしか当たらず、末尾がその語で終わるもの全部は拾えません。一文字も付かない場合を落とします。
この問題に関係する言葉
- ワイルドカード
- 文字列
出典:令和元年度 秋期 ITパスポート試験(特別措置試験) 問99(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くなら基礎理論へ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)