103.7標準
nums.txtから、行全体が数字ちょうど3桁である行だけを抽出する。
grepの既定である基本正規表現を使用し、-Eは付けない。
適切なパターンはどれか。
× 不正解
BREでは繰り返し回数を\{m\}と書く。^と$を組み合わせることで行全体を3桁に限定できる。
詳細解説
誤り
^[[:digit:]]{3}$BREではこの波括弧を量指定子として扱わない。
BREでは波括弧が量指定子にならない。
誤り
[[:digit:]]\{3\}3桁部分には一致するが、アンカーがないため4桁以上の行も抽出する。
4桁以上の一部分にも一致する。
正しい
^[[:digit:]]\{3\}$BREの間隔表現をエスケープし、行頭と行末で3桁に限定する。
正解。BREの3回と完全一致を組み合わせる。
誤り
^[[:digit:]]\+3$1文字以上の数字の後に文字3を要求し、桁数を3に限定しない。
数字列の後に3を要求する別の意味になる。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' 12 123 1234 abc | grep '^[[:digit:]]\{3\}$'期待される結果
123理解のポイント
- BREでは\{3\}
- EREでは{3}
- アンカーで部分一致を防ぐ
確認時の注意
- 確認環境: GNU grep 3.x / LC_ALL=C
基礎のおさらい
基本正規表現
grepの既定はBREで、間隔表現の波括弧をバックスラッシュでエスケープする。
検索範囲
桁数を問う場合は^と$がないと長い数字列へ部分一致する。
問題IDKP-103-114
確認環境GNU grep 3.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告