基本から実務でよく使うパターンまで、段階的に正規表現の力を試せる問題集です。
郵便番号・メール・バージョン番号・Markdown リンクなど、実務シーンを想定しています。
想定レベル:Lv2〜4/目安:各5〜8分
1) 郵便番号(日本形式)の抽出
問題:文字列から 「123-4567」形式の郵便番号 をすべて抽出してください。
▶解答例
grep -Eo “[0-9]{3}-[0-9]{4}” sample.txt
2) 郵便番号をハイフン無しに置換
問題:ファイル内の郵便番号からハイフンを削除し、7桁数字だけに整形してください。
▶解答例
sed -E “s/([0-9]{3})-([0-9]{4})/\1\2/g” sample.txt
3) メールアドレスの抽出
問題:テキストから メールアドレス(例: user@example.com) を抽出してください。
▶解答例
grep -Eo “[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}” mail.txt
4) ドメイン部分だけを抜き出す
問題:メールアドレスから ドメイン部分(example.com)だけを取り出してください。
▶解答例
grep -Eo “@[A-Za-z0-9.-]+.[A-Za-z]{2,}” mail.txt | sed “s/@//”
5) バージョン番号の抽出
問題:テキストから 「1.2.3」形式のバージョン番号を抽出してください。
▶解答例
grep -Eo “[0-9]+.[0-9]+.[0-9]+” version.txt
6) 先頭が v のバージョンを整形
問題:文字列 v1.2.3 を 先頭の v を削除して 1.2.3 に置換してください。
▶解答例
sed -E “s/^v([0-9]+.[0-9]+.[0-9]+)/\1/” version.txt
7) Markdown リンクの抽出
問題:テキストから Markdownリンク [タイトル](URL) のURL部分だけを抽出してください。
▶解答例
grep -Eo “
[]]+[^]]+([^)]+” doc.md | sed -E “s/.*(([^)]+)$/\1/”
8) 電話番号(国内形式)の抽出
問題:テキストから 「03-1234-5678」「090-1234-5678」形式の電話番号を抽出してください。
▶解答例
grep -Eo “0[0-9]{1,3}-[0-9]{2,4}-[0-9]{4}” phone.txt
9) 空白を含む行を検出
問題:テキストで 空白(スペースやタブ)を含む行を抽出してください。
▶解答例
grep -nE “\s” sample.txt
10) HTMLタグを除去
問題:テキストから 簡易的にHTMLタグを削除してください。
▶解答例
sed -E “s/<[^>]+>//g” page.html
学習のヒント
- 抽出系 → grep -Eo
- 置換系 → sed -E “s/…/…”
- 列処理 → awk で拡張も可能
- 正規表現設計のコツ:まず最小構造を作り、必要に応じて範囲を広げる
この練習問題は「パターンを思い出して即書ける」ことを目的としています。
応用として、自分のログやCSVに合わせて書き換えてみると、より実務力がつきます。

