本文へスキップ

平成23年度 秋期 ITパスポート試験 問73

この問題の解説と、これまでの解答の記録です。

問73
頻出度★★☆

ワイルドカードの“%”が 0 個以上の連続した任意の文字列を表し,“_”が任意の 1 文字を表すとき,文字列全体が“%イ%ン_”に一致するものはどれか。

出典 平成23年度 秋期 ITパスポート試験 問73
解説

問 73

  • ア

    正解 正解はア。まずパターン『%イ%ン_』の意味を正確に読み解く。『%』は 0 個以上の連続した任意の文字列を表すので、1 文字も無くてもよいし何文字あってもよい。『_』は任意の 1 文字を表すので、必ずちょうど 1 文字が対応する (0 文字では駄目)。そして問われているのは文字列全体の一致なので、パターンは先頭から末尾までを覆い尽くさなければならない。これらを合わせると、一致する文字列の条件は次の三つに分解できる。(1) 文字列のどこかに『イ』がある。(2) その『イ』より後ろに『ン』がある。(3) その『ン』の後ろに残る文字がちょうど 1 個、つまり末尾から 2 文字目が『ン』である。ア「アクセスポイント」は 8 文字で、順に ア・ク・セ・ス・ポ・イ・ン・ト となる。6 文字目が『イ』、7 文字目が『ン』、8 文字目が『ト』なので、先頭の『%』に『アクセスポ』、続く『イ』に 6 文字目の『イ』、二つ目の『%』に空文字列 (0 文字でよい)、『ン』に 7 文字目の『ン』、最後の『_』に 8 文字目の『ト』を割り当てれば、パターンが文字列全体をぴったり覆う。したがってアだけが一致する。実務では、この種のパターン照合は SQL の LIKE 述語による文字列検索や、ファイル名の絞込みで日常的に使われる考え方である。解く際のコツは、まず末尾側の固定部分から確認することで、この問題なら『末尾から 2 文字目が ン か』を先に見れば、イとウは即座に除外でき、残った候補について『その ン より前に イ があるか』を確かめればよい。

  • 不正解イ

    「イベントドリブン」は 8 文字で、順に イ・ベ・ン・ト・ド・リ・ブ・ン となる。パターン末尾の『_』は必ずちょうど 1 文字に対応するため、『ン』の後ろに 1 文字だけ残っている必要があるが、この文字列は『ン』で終わっており、8 文字目の『ン』の後ろには文字が 1 個も残らない。もう一方の 3 文字目の『ン』を使おうとすると、後ろに『トドリブン』の 5 文字が残ってしまい、1 文字しか受け取れない『_』では覆いきれない。『%』が末尾に無いことがここでの決め手であり、先頭に『イ』があるからといって一致するわけではない。よって不一致である。

  • 不正解ウ

    「クライアントサーバ」は 9 文字で、順に ク・ラ・イ・ア・ン・ト・サ・ー・バ となる。3 文字目に『イ』、5 文字目に『ン』があり、『イ』が『ン』より前にあるという条件までは満たすものの、その『ン』の後ろには『トサーバ』の 4 文字が残る。『_』は任意の 1 文字であって任意の文字列ではないので、4 文字をまとめて受け取ることはできない。末尾から 2 文字目を見ると『ー』であって『ン』ではなく、この時点で条件を満たさないと判断できる。『_』と『%』の役割の違いを取り違えると誤って選びやすい選択肢である。

  • 不正解エ

    「リバースエンジニアリング」は 12 文字で、順に リ・バ・ー・ス・エ・ン・ジ・ニ・ア・リ・ン・グ となる。末尾から 2 文字目が 11 文字目の『ン』で、その後ろに『グ』が 1 文字残るため、パターン後半の『ン_』の部分は確かに満たしている。しかしこの文字列には『イ』という文字が一つも含まれていない。8 文字目の『ニ』は字形が似ているだけの別の文字であり、ワイルドカードでない『イ』はその文字そのものと一致しなければならないため代用できない。パターン前半の『イ』を満たせない以上、全体としては不一致である。

ここがポイント
  • ワイルドカードの役割の違い — 『%』は 0 個以上の連続した任意の文字列に対応するので長さ 0 でもよいが、『_』は任意の 1 文字であり必ずちょうど 1 文字を消費する。この 0 文字可か 1 文字必須かの差が正誤を分ける。SQL の LIKE 述語で使われる記法そのもので、ファイル名検索の『*』と『?』に対応する考え方である。
  • 全体一致パターンの分解のしかた — 文字列全体の一致では、パターンは先頭から末尾までを覆い尽くす必要がある。『%イ%ン_』なら「どこかに イ がある」「その後ろに ン がある」「末尾から 2 文字目が ン である」という三条件に分解でき、末尾の固定部分から先に照合すると候補を効率よく絞り込める。
用語

解答の記録