【プログラミング初心者向け】正規表現とは?使用例もまとめて解説!

【プログラミング初心者向け】正規表現とは?使用例もまとめて解説!

目次

    正規表現とは?

    正規表現(regex)は、文字の並びで検索パターンを定義する手法です。たとえば、「すべての電話番号を見つける」といったタスクを、特定の形式(例: 123-456-7890)に合致するパターンで自動化できます。

    正規表現を使用する場面

    正規表現は様々な場面で使用されます。今回はその中でも代表的な使用例を2つご紹介します。

    サクラエディタで一括検索、一括置換

    サクラエディタは無料のテキストエディタで、正規表現を使ってメモ帳内のテキストを一括検索・置換できます。たとえば、ログファイルからエラーメッセージを抽出する際、一括検索することで、より効率的に作業を行うことができます。また、一括検索した「電話番号」や「メールアドレス」などをすべて別の値に一括置換することも可能です。

    プログラミングでの入力検証

    プログラミングでは、正規表現で入力データの形式をチェックします。たとえば、通販サイトの会員登録でウェブフォームのメールアドレスが「xxx@xxx.com」の形式かどうかを確認できます。その形式でなければ、エラーメッセージを表示する、といったことが可能になります。Python、JavaScript、Javaなど多くのプログラミング言語で標準的にサポートされています。

    基本構文とパターン

    正規表現には独自の構文があり、以下の基本要素があります。

    リテラル文字: 文字そのものをマッチ。例えば、aは「a」に一致。
    メタ文字: 特殊な意味を持つ文字。例えば

    • . : 改行を除く任意の1文字にマッチ。
    • * : 前の要素が0回以上繰り返す場合にマッチ。
    • + : 前の要素が1回以上繰り返す場合にマッチ。
    • ? : 前の要素が0回または1回の場合にマッチ。
    • {n} : 前の要素がちょうどn回繰り返す場合にマッチ。
    • \d : 任意の数字(0~9)にマッチ。
    • [ ] : 文字クラスを定義(例: [abc]は「a」「b」「c」のいずれかにマッチ)。
    • ^ : 文字列の開始にマッチ。
    • $ : 文字列の終了にマッチ。
    • 文字クラス: 角括弧で囲むことで、特定の文字セットを指定。例えば、[a-z]は小文字のaからzまでのいずれかにマッチ。なお、角括弧内でハイフン-を使用する場合、前後に文字や数字を指定すると範囲を示す(例: [a-zA-Z]は小文字a~zまたは大文字A~Z、 [0-9]は0~9のいずれかにマッチ)。
      グループと交互: 括弧()で部分パターンをグループ化し、|で選択肢を指定。例えば、cat|dogは「cat」または「dog」にマッチ。

    正規表現の実用例

    正規表現の実用例をいくつか紹介し、それぞれの用途や仕組みについて解説します。

    電話番号(ハイフンあり)

    携帯電話や固定電話の番号をチェックする正規表現。
    正規表現:\d{2,4}-\d{2,4}-\d{4}

    解説:

    \d{2,4} は「2桁から4桁の数字に一致する」というルールになります。

    このルールを元に \d{2,4}-\d{2,4}-\d{4} を分解して考えると以下の通りになります。

    • \d{2,4} → 市外局番(例: 03, 090)
    • – → 必須のハイフン記号
    • \d{2,4} → 中間の番号部分(例: 1234)
    • – →必須のハイフン記号
    • \d{4} → 最後の4桁の番号

    メールアドレス

    メールアドレスの形式をチェックする正規表現。
    正規表現:[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

    解説:

    1. [a-zA-Z] は 「小文字のaからz、大文字のAからZまでの英字を許容する」というルールになります。
    2. [0-9] は 「0から9までの数値を許容する」というルールになります。
    3. [._%+-] は .(ドット)、_(アンダースコア)、%(パーセント)、+(プラス)、-(ハイフン) の5種類の記号のみを許容する」というルールになります。
    4. + は 「1文字以上の文字列であること」というルールになります。
    5. {2,} は「2文字以上(.jp, .com, .org など)」というルールになります。

    このルールを元に [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} を分解して考えると以下の通りになります。

    • [a-zA-Z0-9._%+-]+ → ユーザー名の部分(英数字や記号を許容)
    • @ → 必須の「@」記号
    • [a-zA-Z0-9.-]+ → ドメイン名の部分
    • \. → 「\」はエスケープ文字。「.」を文字列として扱う
    • [a-zA-Z]{2,}$ → ドットの後に2文字以上のTLD(例: .com, .jp など)

    まとめ

    正規表現は、テキストデータの取り扱いを効率化し、複雑なパターンマッチングを可能にする強力なツールです。プログラマーやデータアナリスト、テキスト編集者にとって、学習する価値は大いにあります。この記事を参考に、ぜひ正規表現を試してみてください。

    まずは選考会へ!

    「プログラマーになって一緒に働きませんか?」
    テックドリームの選考会は、選考だけでなく「相互理解」の場。不安なことも直接ご相談いただけます。


    電話でのご予約

    Webかんたん予約ができない場合や、ご質問がございましたら、
    お気軽にお電話ください。

    0120-262-242
    9:00~18:00(土日祝を除く)

     

    >テクド・リム

    テクド・リム


    「テックドリーム」の公式キャラクター。
    プログラマーだった父の影響を受けて、
    夢に向かって日々勉強に励むプログラマーのタマゴ。
    夢は「世界を変える、すごいプログラマーになること!」

    CTR IMG