正規表現の最初の一歩──「.」「*」「\d」だけ覚えれば検索置換が一気に楽になる
正規表現は「全部覚える」のではなく、よく使うメタ文字だけ押さえれば十分です。. \d \w \s や * + ? の意味、郵便番号・メールの簡易パターン、キャプチャと置換の $1、g/i/m フラグまで、最初の一歩をやさしく整理します。
エディタやテキストツールの「検索置換」を使っていて、ふと * や \d のような記号 に出会ったことはありませんか。なんとなく避けてきたけれど、「正規表現が読めると一気に楽になる」という話だけは耳にする──そんな方は多いと思います。
「正規表現って全部覚えないとダメ?」「どこから手をつければいい?」と身構えている方に向けて、最初の一歩だけを整理します。
結論を先に書きます。
正規表現は全部覚える必要はありません。よく使うのは10数個のメタ文字だけで、.(任意の1文字)、\d(数字)、*(繰り返し)あたりを押さえれば、日常の検索置換は8割こなせます。
まず「メタ文字」とは何か
正規表現とは、文字の「パターン」を書くための小さな言語 です。「abc という文字列」ではなく、「数字が3つ並んでいる箇所」「末尾が .txt のもの」のように、条件で文字を探すための書き方だと思ってください。
その条件を表す特別な記号が メタ文字 です。a や 5 のような普通の文字はそのまま「その文字」を意味しますが、. や * は「特別な意味」を持ちます。逆に言えば、この特別な記号の意味さえ分かれば、正規表現は読めるということです。
基本メタ文字の早見表
最初に覚えるべきものだけをまとめました。これがほぼ全てです。
| メタ文字 | 意味 | 例 |
|---|---|---|
. | 任意の1文字(改行以外) | a.c → abc axc |
\d | 数字1文字(0〜9) | \d\d → 42 |
\w | 英数字とアンダースコア | \w+ → user_01 |
\s | 空白(スペース・タブ・改行) | a\sb → a b |
* | 直前を0回以上 | ab* → a ab abbb |
+ | 直前を1回以上 | ab+ → ab abbb |
? | 直前を0回か1回 | colou?r → color colour |
{n,m} | 直前をn〜m回 | \d{2,4} → 2〜4桁の数字 |
[abc] | カッコ内のいずれか1文字 | [aeiou] → 母音 |
( ) | グループ化(まとめる) | (ab)+ → ababab |
^ | 行の先頭 | ^太郎 → 行頭の「太郎」 |
$ | 行の末尾 | です$ → 行末の「です」 |
| | または | cat|dog → cat か dog |
\ | エスケープ(特殊文字を打ち消す) | \. → 文字としての . |
\d \w \s を大文字にすると 否定 になります(\D は「数字以外」、\S は「空白以外」)。これも覚えておくと便利です。
「読めるかどうか」より「手を動かして試す」のが一番早いので、表を眺めたら 正規表現テスターを整える に上の例を貼り付けて、色がつく様子を見てみてください。
よく使うパターンの実例
抽象的な記号の話だけでは身につきません。現場でそのまま使えるパターンをいくつか挙げます。
郵便番号
\d{3}-\d{4}
\d{3} で数字3つ、- でハイフン、\d{4} で数字4つ。123-4567 にマッチします。
電話番号(簡易)
0\d{1,4}-\d{1,4}-\d{4}
0 で始まり、ハイフン区切りの数字。市外局番の桁数がバラバラなので {1,4} で幅を持たせています。
メールアドレス(簡易)
\w+@\w+\.\w+
\w+ で名前部分、@、ドメイン、\.(文字としてのドット)、トップレベルドメイン、という構造です。
⚠️ 注記: メールや電話の「厳密に正しい」パターンは、RFCの仕様まで踏み込むと非常に複雑になります。ここで挙げたのは 日常の検索置換で「だいたい拾えればいい」レベルの簡易版 です。本番のバリデーションには使わないでください。
これらのパターンが手元のデータで本当にマッチするかは、正規表現テスターを整える に実データを貼って確認するのが確実です。
キャプチャと置換──ここからが本番の便利さ
正規表現の真価は 「探す」だけでなく「置き換える」 ときに出ます。
( ) で囲んだ部分は キャプチャ され、置換の際に $1 $2 で呼び出せます(1番目のカッコが $1、2番目が $2)。
たとえば 2026-06-16 という日付を 2026/06/16 に変えたいとき:
- 検索:
(\d{4})-(\d{2})-(\d{2}) - 置換:
$1/$2/$3
これで 年・月・日をそのまま使い回して、区切り文字だけ差し替えることができます。1件ずつ手で直す作業が、一発で終わります。
「姓 名 を 名 姓 にひっくり返す」「電話番号からハイフンを抜く」など、順序の入れ替えや一部だけの整形 がキャプチャの得意分野です。
フラグ──同じパターンでも挙動が変わる
正規表現には フラグ という「オプション」があります。よく使うのは次の3つです。
| フラグ | 意味 | 効果 |
|---|---|---|
g | global(全件) | 最初の1件で止めず、すべてにマッチ・置換する |
i | ignore case(大小無視) | A と a を区別しない |
m | multiline(複数行) | ^ $ が 各行の 先頭・末尾になる |
特に g は重要です。これを付けないと 最初の1件しか置換されない ので、「一括置換のつもりが1個しか変わらない」というのは初心者がほぼ必ず通る道です。
つまずきやすいポイント2つ
1. 特殊文字をそのまま探したいとき
. は「任意の1文字」という特別な意味なので、文字としてのピリオドを探したいときは \ でエスケープして \. と書きます。? * + ( ) [ ] $ ^ なども同様で、そのまま探すには前に \ を付けます。
2. .* の暴走に注意
.*(任意の文字が0回以上)は便利ですが、欲張って想定外の範囲まで飲み込むことがあります。たとえば <.*> は <a> だけでなく <a>テキスト<b> 全体にマッチしてしまいます。「できるだけ短く」マッチさせたいときは .*? のように ? を付ける(最小マッチ)と安全です。
💡 totonoe の正規表現は ブラウザの JavaScript(ECMAScript)準拠 です。Python や PHP など他言語の正規表現とは、一部の書き方(先読み・名前付きキャプチャの記法など)が異なる場合があります。ここで紹介した基本メタ文字は、どの言語でもほぼ共通です。
自分のパターンを試す
正規表現は 「書いて、当てて、直す」を素早く回す のが上達の近道です。頭の中で「これでマッチするはず」と考えても、実データには想定外のゆらぎがあるものです。
正規表現テスターを整える にテキストを貼り、パターンを入力すると、
- マッチした箇所が その場でハイライトされる
gimフラグを チェックボックスで切り替えられる- 置換結果(
$1などのキャプチャ参照込み)が リアルタイムでプレビューされる - どこにマッチしたか・何件ヒットしたかが一目で分かる
ので、「書いたパターンがなぜ当たらないのか」をその場で潰せます。送信ボタンなしのブラウザ内処理なので、メールアドレスや電話番号などの実データを貼っても外部に送られません。
関連ツールとのシナジー
- マッチ・置換をその場で確認するなら → 正規表現テスターを整える
- 「サーバー/サーバ」のような表記ゆれを一括で統一するなら → 表記ゆれを整える(正規表現を書かずに揺れを揃えられます)
- 余計な改行や空白を整えてからパターンを当てたいなら → 改行・空白を整える
「正規表現で頑張る」前に、表記ゆれや改行を整えるツールで下ごしらえしておくと、書くべきパターンがぐっとシンプルになります。
まとめ
- 正規表現は全部覚えなくていい。よく使うメタ文字は10数個だけ
.(任意1文字)\d(数字)\w(英数字)\s(空白)が基本の4つ- 繰り返しは
*(0回以上)+(1回以上)?(0/1回){n,m}(回数指定) - 郵便番号
\d{3}-\d{4}のような 定番パターン をいくつか持っておくと早い ( )でキャプチャ → 置換で$1が正規表現の真の便利さ- フラグ
g(全件)i(大小無視)m(複数行) を忘れずに .などを文字として探すには\.とエスケープ。.*の暴走には.*?で対処- totonoe は JavaScript(ECMAScript)準拠。他言語とは一部違う
- 試すなら 正規表現テスターを整える が一番早い
正規表現は「覚える」より「手元のデータで当ててみる」もの。最初の数個を試すだけで、検索置換の世界が一段ラクになります。