基本情報技術者試験 - 令和6年6月修了 - 問3
UNIXにおける正規表現 [A-Z]+[0-9]* が表現する文字列の集合の要素となるものはどれか。ここで,正規表現は次の規則に従う。
[A-Z] は,大文字の英字1文字を表す。
[0-9] は,数字1文字を表す。
+は,直前の正規表現の1回以上の繰返しであることを表す。
*は,直前の正規表現の0回以上の繰返しであることを表す。
[A-Z] は,大文字の英字1文字を表す。
[0-9] は,数字1文字を表す。
+は,直前の正規表現の1回以上の繰返しであることを表す。
*は,直前の正規表現の0回以上の繰返しであることを表す。
| ア | 456789 |
|---|---|
| イ | ABC+99 |
| ウ | ABC99* |
| エ | ABCDEF |
答え : エ
分野 : テクノロジ系 › 基礎理論 › 基礎理論 › 情報に関する理論
解説 :
正規表現 [A-Z]+[0-9]* は「大文字の英字が1回以上続いた後に,数字が0回以上続く」という意味です。「エ」のABCDEFは大文字だけの文字列ですが,数字部分が0回(つまり無し)と解釈できるため,この正規表現に合致します。
「ア」の456789は数字のみで英字がないため不適合,「イ」のABC+99は「+」という記号自体が文字列に含まれており正規表現の意味とは異なるため不適合,「ウ」のABC99\*も同様に「\*」の文字が含まれているため不適合です。
正規表現の「+」は「直前の文字やパターンの1文字以上の繰り返し」,「*」は「直前の文字やパターンの0文字以上の繰り返し」(存在しない場合を含む),「-」は文字コードに基づく範囲を表す特殊記号です。これらは実際の文字列に含まれる文字を指定するものではない点を理解することがこの問題のポイントです。
分野 : テクノロジ系 › 基礎理論 › 基礎理論 › 情報に関する理論
解説 :
正規表現 [A-Z]+[0-9]* は「大文字の英字が1回以上続いた後に,数字が0回以上続く」という意味です。「エ」のABCDEFは大文字だけの文字列ですが,数字部分が0回(つまり無し)と解釈できるため,この正規表現に合致します。
「ア」の456789は数字のみで英字がないため不適合,「イ」のABC+99は「+」という記号自体が文字列に含まれており正規表現の意味とは異なるため不適合,「ウ」のABC99\*も同様に「\*」の文字が含まれているため不適合です。
正規表現の「+」は「直前の文字やパターンの1文字以上の繰り返し」,「*」は「直前の文字やパターンの0文字以上の繰り返し」(存在しない場合を含む),「-」は文字コードに基づく範囲を表す特殊記号です。これらは実際の文字列に含まれる文字を指定するものではない点を理解することがこの問題のポイントです。