103.7基礎
codes.txtから、英小文字1文字の後に数字以外の1文字が続く2文字の行だけを抽出する。
LC_ALL=Cを使用する。
適切なEREはどれか。
× 不正解
ブラケット式は先頭の^で否定する。[^[:digit:]]は数字以外の1文字に一致する。
詳細解説
正しい
^[[:lower:]][^[:digit:]]$先頭が英小文字、2文字目が数字以外という条件を行全体へ適用する。
正解。小文字の後を数字以外に限定する。
誤り
^[[:lower:]][[:digit:]]$2文字目を数字に限定し、条件が逆になる。
2文字目を数字に限定する逆の条件である。
誤り
^[^[:lower:]][[:digit:]]$先頭を英小文字以外、2文字目を数字に限定する。
両方の位置の条件が逆である。
誤り
^[[:lower:]^[:digit:]]$否定記号がブラケット式の先頭にないため、意図した否定にならない。
^の位置が否定を表す位置ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' a1 a- Z- ab | LC_ALL=C grep -E '^[[:lower:]][^[:digit:]]$'期待される結果
a-
ab理解のポイント
- ^はブラケット式先頭で否定
- 文字クラスも否定できる
- アンカーで2文字に限定
確認時の注意
- 確認環境: GNU grep 3.x / LC_ALL=C
基礎のおさらい
否定クラス
^はブラケット式の先頭にある場合だけ集合の否定として働く。
1文字単位
ブラケット式全体は候補集合から1文字へ一致する。
問題IDKP-103-103
確認環境GNU grep 3.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告