開発

正規表現入門|基本メタ文字と書き方をやさしく解説する初心者ガイド

正規表現(regex)は、文字列の検索・抽出・置換を一気にこなせる強力な道具です。本記事では「正規表現とは何か」から、. や * といった基本メタ文字、量指定子、メールや電話番号などよく使うパターン、グループと置換、そして挫折しない学習のコツまでを、初心者向けに順を追って解説します。

公開: 2026-10-16

「ログから日付だけ抜き出したい」「入力されたメールアドレスが正しい形式か確かめたい」——こうした文字列の処理を、たった一行のルールで実現できるのが正規表現です。最初は記号の羅列に見えて身構えてしまいますが、基本となる部品はそれほど多くありません。本記事では、はじめて学ぶ方に向けて、正規表現の考え方と書き方を一歩ずつ解説します。

正規表現とは何か

正規表現(regular expression、略してregex)とは、「こういう並びの文字列にマッチする」というパターンを記述するための小さな言語です。検索ボックスに文字を打ち込むと完全一致するものを探せますが、正規表現を使うと「数字が3つ続く」「@を含む」といったあいまいで柔軟な条件を表現できます。

正規表現が役立つ場面は主に次の3つです。

  • 検索:大量のテキストから条件に合う箇所を見つける。
  • 抽出:マッチした部分(日付やID、URLなど)を取り出す。
  • 置換:見つけた部分を別の文字列に一括で書き換える。

正規表現はテキストエディタ、プログラミング言語(JavaScript、Python、PHPなど)、データベース、コマンドラインツールなど、ほぼあらゆる環境で使えます。書き方には方言(フレーバー)がありますが、本記事で扱う基本部分はどの環境でもほぼ共通です。

パターンの中の文字は、2種類に分かれます。そのままの文字(リテラル)と、特別な意味を持つメタ文字です。たとえば cat と書けば「cat」という3文字にそのままマッチしますが、ここに記号を混ぜることで柔軟さが生まれます。

基本メタ文字を覚える

まず押さえたいのが、特別な働きをするメタ文字です。数は限られているので、一つずつ意味を理解していきましょう。

記号意味例
.任意の1文字a.c は abc, axc などにマッチ
[ ]かっこ内のいずれか1文字[abc] は a か b か c
[^ ]かっこ内以外の1文字[^0-9] は数字以外
( )グループ化(abc)+ で abc の繰り返し
|または(OR)cat|dog は cat か dog
^行の先頭^A は A で始まる
$行の末尾z$ は z で終わる

とくに使用頻度が高いのが文字クラス [ ]です。[0-9] は0から9の数字、[a-z] は小文字アルファベット、[A-Za-z0-9] は英数字をまとめて表します。ハイフンで範囲を、先頭の ^ で否定を表せるのがポイントです。

よく使う文字クラスには省略記法もあります。\d は数字([0-9]と同じ)、\w は英数字とアンダースコア、\s は空白文字を表します。大文字にすると否定になり、\D は「数字以外」を意味します。

\d\d\d → 数字が3つ連続する箇所にマッチ(例:123)

注意したいのは、. や * のようなメタ文字そのものを文字として探したいときです。その場合は直前にバックスラッシュを付けて \. のようにエスケープします。たとえばドメインのドットを探すなら \. と書きます。

量指定子で「繰り返し」を表す

メタ文字と並んで重要なのが、直前の要素が「何回繰り返されるか」を指定する量指定子です。これを使いこなすと、可変長の文字列を一気に表現できます。

記号意味
*0回以上の繰り返し
+1回以上の繰り返し
?0回または1回(あってもなくてもよい)
{n}ちょうどn回
{n,}n回以上
{n,m}n回以上m回以下

たとえば \d+ は「数字が1文字以上連続する箇所」を表し、桁数が決まっていない数値にマッチします。colou?r と書けば、u があってもなくてもよいので「color」と「colour」の両方にマッチします。\d{3} なら3桁ちょうど、\d{2,4} なら2〜4桁です。

初心者がはまりやすいのが、* や + の「貪欲(greedy)」な性質です。これらはできるだけ長くマッチしようとするため、思ったより広い範囲を拾ってしまうことがあります。最短でマッチさせたいときは、*? や +? のように後ろに ? を付けて「控えめ(lazy)」にします。HTMLタグの抽出などで役立つテクニックです。

よく使うパターン:メール・電話・URL

ここまでの部品を組み合わせると、実用的なパターンが書けるようになります。代表的な例を見てみましょう。なお、これらは学習用の簡易版であり、すべての例外を完全に網羅するものではありません。

メールアドレス

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

「@の前に英数字・記号が1文字以上」「@」「ドメイン名」「.」「トップレベルドメイン」という構造を表しています。実務で厳密に検証するのは難しいため、まずは大まかな形式チェックに使うのが現実的です。

日本の電話番号(ハイフン区切り)

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

「0で始まり」「市外局番」「市内局番」「加入者番号」をハイフンでつないだ形を表します。\d{1,4} で桁数の幅を許容しているのがポイントです。

URL

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

https? の ? によって「http」と「https」の両方にマッチします。続く文字クラスで、URLに現れる典型的な文字をまとめて許可しています。

こうしたパターンは、頭の中だけで正しさを判断するのが難しいものです。正規表現チェッカーにパターンとテスト文字列を入力すれば、どこがマッチしているかをその場でハイライト表示できます。試行錯誤しながら調整できるので、学習にも実務にも役立ちます。すべてブラウザ内で動くため、機密性のあるテキストを貼り付けても外部に送信される心配はありません。

グループ化と置換

かっこ ( ) には、まとめて量指定子を適用するだけでなく、マッチした部分を取り出す(キャプチャ)という重要な役割があります。たとえば日付を分解してみましょう。

(\d{4})-(\d{2})-(\d{2})

このパターンは「2026-06-28」のような文字列にマッチし、年・月・日をそれぞれ別のグループとして取り出せます。取り出した値は、多くの環境で $1、$2(または \1、\2)といった番号で参照できます。

これを使うと、強力な置換ができます。たとえば「2026-06-28」を「2026年06月28日」に変換したい場合、置換後の文字列を次のように指定します。

置換前:(\d{4})-(\d{2})-(\d{2}) 置換後:$1年$2月$3日

抽出した値を取り出さなくてよい場合は、(?: ) という「非キャプチャグループ」を使うと、グループ化の機能だけを使えます。番号がずれないため、複雑なパターンでは重宝します。

挫折しない学習のコツ

正規表現は、最初の壁さえ越えれば一生使えるスキルです。効率よく身につけるためのポイントをまとめます。

  1. 一度に全部覚えない:まずは . * + ? [] () | ^ $ と \d \w \s だけで十分です。これらで多くの場面に対応できます。
  2. 必ず動かして確かめる:頭で考えるより、テスト文字列に当てて結果を見るほうが圧倒的に速く理解できます。
  3. 小さく作って少しずつ足す:いきなり完璧なパターンを目指さず、まず大まかにマッチさせてから条件を絞り込みます。
  4. 貪欲マッチに注意する:意図より広く拾うときは ? を足して控えめにする、と覚えておきましょう。
  5. 完璧な検証を求めすぎない:メールやURLの完全な検証は非常に複雑です。多くの場合は「だいたい正しい形式か」のチェックで十分です。

正規表現は、覚える部品は少ないのに応用範囲が驚くほど広い道具です。基本のメタ文字と量指定子、そしてグループと置換を押さえれば、検索・抽出・置換の作業が一気に効率化します。まずは手元の文字列を正規表現チェッカーで試し、マッチの様子を目で確かめながら、少しずつパターンを育てていきましょう。

よくある質問

正規表現とは何ですか?

正規表現(regex)は「こういう並びの文字列にマッチする」というパターンを記述するための小さな言語です。完全一致ではなく「数字が3つ続く」「@を含む」といった柔軟な条件を表現でき、テキストの検索・抽出・置換に使われます。多くのプログラミング言語やエディタで利用できます。

正規表現の勉強は何から始めればよいですか?

まずは基本メタ文字(. * + ? [] () | ^ $)と省略記法(\d 数字、\w 英数字、\s 空白)だけを覚えれば十分です。これらで多くの場面に対応できます。あとは正規表現チェッカーに実際のテスト文字列を当て、マッチの結果を見ながら少しずつ調整していくのが上達の近道です。

. (ドット)と * の違いは何ですか?

. は「任意の1文字」を表すメタ文字で、1文字ぶんにマッチします。一方 * は直前の要素の「0回以上の繰り返し」を表す量指定子です。組み合わせた .* は「任意の文字が0文字以上」、つまり何でもよい任意長の文字列を意味します。

メールアドレスを完全に検証する正規表現はありますか?

理論上は可能ですが非常に複雑で、実務では現実的ではありません。多くの場合は ^[\w.+-]+@[\w-]+\.[\w.-]+$ のような簡易パターンで「だいたい正しい形式か」を確認し、最終的な確認は実際にメールを送る方法が取られます。

正規表現チェッカーに入力したテキストは送信されますか?

WAZA TOOLSの正規表現チェッカーはすべてブラウザ内で処理され、入力したパターンやテスト文字列がサーバーに送信・保存されることはありません。機密性のあるテキストでも安心してご利用いただけます。