基礎理論

基本情報技術者試験正規表現」の問題

テクノロジ系基礎理論難易度:normal
正規表現 ab*c が表す文字列パターンの説明として最も適切なものはどれか。ここで * は直前の文字の0回以上の繰返しを表す。
a と c の間に b がちょうど1個だけ入る文字列
ab という2文字の並びが全体として0回以上繰り返され、その後に c が1個付く文字列
a と b と c がこの順で各1個ずつ並ぶ文字列に限られる
先頭が a、末尾が c で、間に b が0個以上連続する文字列
正解
先頭が a、末尾が c で、間に b が0個以上連続する文字列

* は直前の1文字bの0回以上の繰返しを表す。よってab*cは『a→b(0個以上)→c』の形で、ac・abc・abbc・abbbcなどにマッチする。間のbが0個以上連続するので正しい。

?選択肢ごとの解説

ア ×bがちょうど1個だけというのは誤りで、*は0回も含むためbが0個のac、複数個のabbcにもマッチする。
イ ×『ab』全体の繰返しと解釈しているが、*は直前の1文字bにのみ係るのであって部分文字列abには係らない。
ウ ×各1個ずつ(abcのみ)に限るのは誤りで、bの個数は0個でも複数個でもよい。
エ ○* は直前の1文字bの0回以上の繰返しを表す。よってab*cは『a→b(0個以上)→c』の形で、ac・abc・abbc・abbbcなどにマッチする。間のbが0個以上連続するので正しい。

くわしく

正規表現の * は『直前の1要素』に作用する量化子で、0回以上の繰返しを許す。グループ全体に係らせたい場合は(ab)*のように括弧でくくる必要がある。係る範囲の理解が誤読を防ぐ核心である。

本番での押さえどころ

試験のコツ

* は『直前の1文字を0回以上』。+は1回以上、?は0回か1回。係る範囲は括弧の有無で判断する。

覚え方

* は『直前の1個を好きなだけ(0個含む)コピー』と覚え、グループ化は括弧が要ると紐づける。

よくある誤り

*が直前1文字でなく直前の語全体に係ると誤読する、または*を1回以上(+の意味)と取り違える誤りが多い。

基礎理論の他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0092

【基本情報技術者試験】正規表現の問題 — 解答・解説|ukamiru 過去問