TegaruTools
開発者ガイド

正規表現入門|初心者でも30分で書けるようになる実践ガイド

「メアドだけ抜き出したい」「電話番号の形式を統一したい」といった作業に強い正規表現を、メタ文字・量化子・グループ化など、最低限の文法から実用パターンまで段階的に紹介します。

公開: 2026年6月13日読了 約10TegaruTools

「テキストから電話番号だけ抜き出したい」「全角の数字を半角に置換したい」「ログから特定のパターンを検索したい」——こうした作業を1秒で済ませる魔法のような技術が、正規表現 (Regular Expression / 略してRegex) です。

慣れないと暗号にしか見えませんが、文法のコアは意外と少なく、よく使うパターンを覚えてしまえば一気に応用が利きます。この記事では、初めて触る人でも30分後には書けるようになるよう、基本記法から実用パターンまで段階的に解説します。

正規表現とは何か — 文字列を「パターン」で扱う

通常の文字列検索は「完全に一致する文字列」を探します。「東京」を検索すれば「東京」しかヒットしません。一方、正規表現は「パターンに一致する文字列」を探せます。

例えば、「東京から始まる4文字以上の地名」「ハイフンを含む電話番号」「英大文字3文字+数字4桁の郵便番号風」など、抽象的な条件で文字列を扱えます。これがプログラミング、テキストエディタの検索置換、ログ解析などで広く使われる理由です。

本サイトの 正規表現テスター を使うと、書いたパターンが実際にどんな文字列にマッチするか、リアルタイムで確認できます。記事を読みながら手を動かすのが理解への近道です。

基本のメタ文字 — まずこれだけ覚える

正規表現で「特別な意味を持つ記号」をメタ文字と呼びます。最初に覚えるのは次の5つで十分です。

  • .(ドット)— 任意の1文字。例:a.cabc, a1c, aXc などにマッチ。
  • ^ — 文字列の先頭。例:^Hello は「Helloで始まる」。
  • $ — 文字列の末尾。例:com$ は「comで終わる」。
  • | — または。例:cat|dog は「catかdogのどちらか」。
  • \ — エスケープ。メタ文字を「ただの文字」として扱いたい時に前に付ける。例:3\.14 で「3.14」(ドットを文字通りの「.」として扱う)。

文字クラス — 「この中のどれか1文字」

[ ] で括ると、「中に含まれる文字のどれか1文字」を表します。

  • [abc] — a、b、cのいずれか
  • [a-z] — 小文字英字すべて
  • [0-9] — 数字すべて
  • [a-zA-Z0-9] — 英数字すべて
  • [^abc] — a、b、c以外のどれか(先頭の ^ は否定の意味)

よく使うショートカット

頻出パターンには専用の省略記法があります。

  • \d — 数字 1文字([0-9] と同じ)
  • \D — 数字以外 1文字
  • \w — 単語文字(英数字とアンダースコア)
  • \W — 単語文字以外
  • \s — 空白文字(半角スペース、タブ、改行など)
  • \S — 空白以外

量化子 — 「何回繰り返すか」

直前の文字や文字クラスを「何回繰り返すか」を指定するのが量化子です。これを覚えると、一気に表現できる幅が広がります。

  • * — 0回以上。例:ab*a, ab, abb, abbb ...
  • + — 1回以上。例:ab+ab, abb ... (a単独はNG)
  • ? — 0回または1回。例:colou?rcolorcolour の両方にマッチ。
  • {n} — ちょうどn回。例:\d{4} は数字4桁。
  • {n,} — n回以上。例:\d{3,} は数字3桁以上。
  • {n,m} — n〜m回。例:\d{2,4} は数字2〜4桁。

グループ化と置換 — ( ) で囲む

丸括弧 ( ) で囲むと、その部分を1つのグループとして扱えます。グループは、繰り返しの対象を作ったり、後から参照したりするのに使います。

  • (abc)+ — abc が1回以上繰り返される(abc, abcabc, abcabcabc ...)
  • (cat|dog)s? — cat または dog の後に s が0または1つ

後方参照と置換

グループは $1, $2 ... のように番号で参照できます。これは特に「検索して置換」する時に強力です。

  • 検索パターン:(\d{4})-(\d{2})-(\d{2})
  • 置換:$3/$2/$1
  • 結果:「2026-06-13」→「13/06/2026」のように日付フォーマットを一括変換できる。

貪欲マッチと非貪欲マッチ

正規表現は、デフォルトでは「できるだけ長くマッチさせよう」とします(貪欲)。これが思わぬ結果を招くことがあります。

例:HTMLから <b>タグの中身を取り出したい時、<b>.*</b> と書くと、「<b>太字1</b>普通の文章<b>太字2</b>」全体が1回でマッチしてしまいます。

これを防ぐには、量化子の後に ? を付けて非貪欲にします。

  • 貪欲.* — できるだけ長くマッチ
  • 非貪欲.*? — できるだけ短くマッチ

非貪欲版 <b>.*?</b> なら、それぞれの <b>タグを個別に正しく拾えます。

実用パターン集 — そのまま使える正規表現

メールアドレス(簡易)

[\w.+-]+@[\w-]+\.[\w.-]+

完全な RFC 5322 準拠ではありませんが、日常用途では十分です。ログから抽出する、フォーム検証の参考にする、といった用途で使えます。

URL(http/https)

https?://[\w./%?#&=:-]+

日本の電話番号

0\d{1,4}-\d{1,4}-\d{4}

例:「03-1234-5678」「090-1234-5678」「0120-123-456」のように、3つの数字グループがハイフンで区切られたパターン。

郵便番号(日本)

\d{3}-\d{4}

日付(YYYY-MM-DD)

\d{4}-\d{2}-\d{2}

厳密に「実在する日付」を判定するのは正規表現では難しいので、形式チェックに留めるのが定石です。

半角スペース連続を1つにまとめる

検索:\s+ / 置換:(半角スペース1個)

全角英数字を半角に置換する前段階

全角英数字の検索:[A-Za-z0-9]

よくあるハマりどころ

1. メタ文字のエスケープを忘れる

ピリオド .、丸括弧 ( )、プラス + などは特別な意味を持つので、文字通り使いたい時は前に \ が必要です。「3.14」を探すつもりで 3.14 と書くと、「3X14」「3Y14」など別の文字列もマッチしてしまいます。

2. 改行を含む文字列が思った通りに動かない

. はデフォルトでは改行にマッチしません。複数行にまたがるパターンを書きたい時は、言語・ツールによって s フラグ(DOTALL モード)を有効にする必要があります。

3. 言語ごとの方言

JavaScript、Python、PHP、Ruby、Perl など、言語ごとに細部の文法に違いがあります。基本のメタ文字は共通ですが、後方参照の書き方や、lookahead / lookbehind の対応など、応用部分には差があります。

テスト・学習に使えるツール

正規表現は 書きながらテストして覚える のが最も早い学習方法です。

  • 本サイトの正規表現テスター:パターンを書くとリアルタイムにマッチ結果を表示。テキストはサーバーに送信されないので、機密データを含むテキストでも安全。
  • regex101.com:海外で人気の高機能テスター。各メタ文字の解説も同時表示される。
  • テキストエディタの検索置換:VS Code・サクラエディタ・秀丸エディタ等は正規表現対応。日常の置換作業で使うと身につきやすい。

まとめ — 「全部覚える」必要はない

正規表現は奥が深いですが、日常で使う範囲は意外と狭いです。メタ文字5〜6個 + 文字クラスのショートカット + 量化子 + グループ化、これだけ覚えれば日常作業の8割はカバーできます。

最初は完璧を目指さず、テスターで動作を確認しながら少しずつパターンを組み立てていきましょう。1ヶ月もすれば「これ、正規表現で1秒だな」と気付けるようになります。

この記事で紹介したツール

関連するガイド記事