103.7基礎
words.txtからcolorとcolourの2行だけを抽出する。
uは0回または1回だけ現れる。
適切なEREはどれか。
× 不正解
EREの?は直前の要素を0回または1回にする。省略可能な1文字を表す場合に使える。
詳細解説
誤り
^colou*r$*はuを何文字でも許し、colouurにも一致する。
uを複数回許してしまう。
正しい
^colou?r$?は直前のuを0回または1回にする。
正解。uだけを省略可能にする。
誤り
^colou+r$+はuを1回以上必要とするためcolorに一致しない。
uが必須になりcolorを除外する。
誤り
^colo(u|r)$colouまたはcolorに一致し、colourという綴りを表さない。
文字列の構造が要求と異なる。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' color colour colouur colr | grep -E '^colou?r$'期待される結果
color
colour理解のポイント
- ?は0回または1回
- 直前の1要素へ作用
- アンカーで余分な文字を除外
確認時の注意
- 確認環境: GNU grep 3.x / LC_ALL=C
基礎のおさらい
作用対象
?は直前の1要素だけへ作用するため、この例ではuだけが省略可能になる。
完全一致
^と$により余分な前後文字を持つ行を除外する。
問題IDKP-103-105
確認環境GNU grep 3.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告