ITパスポート試験

問99

ITパスポート過去問 令和1年度(2019年)問99

ワイルドカードに関する次の記述中のa,bに入れる字句の適切な組合せはどれか。

任意の1文字を表す“?”と,長さゼロ以上の任意の文字列を表す“*”を使った文字列の検索について考える。aでは,“データ”を含む全ての文字列が該当する。また,bでは,“データ”で終わる全ての文字列が該当する。

選択肢

正解と解き方・学習ポイント(AI解説)

正解:
あなたの回答:未回答

“データ”を含む条件は、前後に0文字以上の任意の文字列を許すため a は データ です。“データ”で終わる条件は、後ろ(末尾)を「データ」で固定し、前だけを0文字以上の任意の文字列にするため b は *データ です。したがって正しい組合せは「エ」です。

不正解

aが「?データ*」なので、「データ」の前に必ず1文字が必要です。そのため「データベース」のように先頭から「データ」で始まる文字列がaに一致しません。bの「?データ」も同様に「データ」単体に一致しません。

不正解

b の データ は末尾が「データ」で固定されるため、「データ」で終わる条件を満たします。一方 a の ?データ は先頭に必ず1文字が必要なので、「データ」単体に一致せず、“データ”を含む全てを満たしません。

不正解

a の データ は前後に0文字以上の任意の文字列を許すため、“データ”を含む条件を満たします。一方 b の ?データ は先頭に必ず1文字が必要なので、「データ」単体に一致せず、「データ」で終わる全てを満たしません。

正解

a の データ は「データ」の前後に0文字以上の任意の文字列を許すため、“データ”を含む全てに一致します。b の *データ は先頭側に0文字以上の任意の文字列を許し、末尾を「データ」で固定できるため、「データ」で終わる全てに一致します。

Point

この問題は、ワイルドカード「?」「*」の意味を正しく理解し、「文字列に含む」と「文字列の末尾が一致する」を検索パターンとして正しく表せるかを確認することがねらいです。

解くために必要な知識

この問題を解くには、ワイルドカード(?と*)を使った文字列検索の基本を理解している必要があります。

用語の整理

用語 意味
ワイルドカード 検索パターンで、任意の文字や文字列を表す記号の総称です。
? 任意の1文字を表します。0文字は表せません。
* 長さ0以上の任意の文字列を表します。0文字も表せます。

パターンの作り方

「含む(部分一致)」の作り方

対象の語の前後に文字が付く可能性があるため、前後を * で許します。

  • 例:データ

    • 一致する例:「データ」「顧客データ」「データ一覧」

「〜で終わる(後方一致)」の作り方

末尾を固定し、先頭側だけを * で許します。

  • 例:*データ

    • 一致する例:「データ」「顧客データ」
    • 一致しない例:「データ一覧」(末尾がデータではないため)

ひっかかりやすい点(? の扱い)

? は必ず1文字分を要求します。

  • ?データ は「(任意の1文字)+データ」にしか一致しないため、「データ」単体には一致しません。

問題の解法手順

a(「データ」を含む)の作り方

手順1:ワイルドカードの意味を確認します

  • ?:任意の1文字(0文字は不可)

  • *:長さ0以上の任意の文字列(0文字も可)

手順2:「“データ”を含む」をパターンにします(a)

「データ」の前後には、文字が付く場合も付かない場合もあります。

  • 前:0文字以上を許す

  • 後:0文字以上を許す

したがって a は データ です。

b(「データ」で終わる)の作り方

手順1:「“データ”で終わる」をパターンにします(b)

末尾は必ず「データ」で固定し、先頭側だけが可変です。

  • 前:0文字以上を許す

  • 後:許さない(末尾がデータで確定)

したがって b は *データ です。

手順2:選択肢を照合します

a が データ、b が *データ の組合せは「エ」です。

選択肢ごとの解説

不正解

aが「?データ*」なので、「データ」の前に必ず1文字が必要です。そのため「データベース」のように先頭から「データ」で始まる文字列がaに一致しません。bの「?データ」も同様に「データ」単体に一致しません。

不正解

b の データ は末尾が「データ」で固定されるため、「データ」で終わる条件を満たします。一方 a の ?データ は先頭に必ず1文字が必要なので、「データ」単体に一致せず、“データ”を含む全てを満たしません。

不正解

a の データ は前後に0文字以上の任意の文字列を許すため、“データ”を含む条件を満たします。一方 b の ?データ は先頭に必ず1文字が必要なので、「データ」単体に一致せず、「データ」で終わる全てを満たしません。

正解

a の データ は「データ」の前後に0文字以上の任意の文字列を許すため、“データ”を含む全てに一致します。b の *データ は先頭側に0文字以上の任意の文字列を許し、末尾を「データ」で固定できるため、「データ」で終わる全てに一致します。

まとめ

“データ”を含む条件は、前後に0文字以上の任意の文字列を許すため a は データ です。“データ”で終わる条件は、後ろ(末尾)を「データ」で固定し、前だけを0文字以上の任意の文字列にするため b は *データ です。したがって正しい組合せは「エ」です。

テクノロジ系 > 基礎理論 > 基礎理論

順次、単語を追加予定です。もうしばらくお待ちください。