正規表現 インタラクティブチートシート

各行の「試す」ボタンをクリックするとパターンがライブテスターに読み込まれます。

ライブテスター
/ /
マッチなし
マッチした箇所がここにハイライト表示されます
一致するエントリが見つかりませんでした。
パターン説明操作
文字クラス (Character Classes)
.
改行以外の任意の1文字c.t → "cat", "cut", "c3t"
\d
数字 [0-9]\d+ → "42", "100"
\D
数字以外の文字\D+ → "abc ", " xyz"
\w
単語文字 [a-zA-Z0-9_]\w+ → "hello", "world_2"
\W
単語文字以外(記号・空白など)\W → " ", "-", "@"
\s
空白文字(スペース・タブ・改行など)\s+ → 単語間の空白
\S
空白以外の文字\S+ → "hello", "world"
\t
水平タブ文字\t → TSVの区切り文字
\n
改行文字\n → 行の区切り
[abc]
文字クラス — a・b・cのいずれか1文字[aeiou] → 母音
[^abc]
否定文字クラス — a・b・c以外の文字[^aeiou\s] → 子音
[a-z]
文字範囲(aからzまでの1文字)[a-zA-Z]+ → 英単語
量指定子 (Quantifiers)
*
0回以上(貪欲マッチ)ab* → "a", "ab", "abbb"
+
1回以上(貪欲マッチ)ab+ → "ab", "abbb"("a"は非マッチ)
?
0回または1回(省略可能)colou?r → "color", "colour"
{n}
ちょうどn回繰り返す\d{4} → "2025", "1234"
{n,m}
n回以上m回以下の繰り返し\d{2,4} → "12", "123", "1234"
{n,}
n回以上の繰り返し\d{3,} → "123", "12345"
*?
0回以上(非貪欲 — 最短マッチ)<.*?> → 各HTMLタグ
+?
1回以上(非貪欲 — 最短マッチ)".+?" → 引用符内の文字列
アンカー・境界 (Anchors & Boundaries)
^
文字列(または行)の先頭(mフラグで行ごと)^\d+ → 先頭の数字
$
文字列(または行)の末尾(mフラグで行ごと)\d+$ → 末尾の数字
\b
単語境界(単語文字と非単語文字の境目)\bcat\b → "cat"("catch"は非マッチ)
\B
非単語境界(単語の内側)\Bcat\B → "concatenate"の中の"cat"
グループ・交替 (Groups & Alternation)
(abc)
キャプチャグループ — マッチした文字列を保存(\d{4})-(\d{2}) → 年・月
(?:abc)
非キャプチャグループ — グループ化のみ(保存しない)(?:foo|bar)baz → "foobaz"
(?<name>)
名前付きキャプチャグループ(?<yr>\d{4}) → グループ"yr"
a|b
交替 — aまたはbにマッチcat|dog → "cat"または"dog"
\1
キャプチャグループ1への後方参照(\w+) \1 → 重複単語
先読み・後読み (Lookahead & Lookbehind)
(?=abc)
肯定先読み — abcが後ろに続く場合にマッチ\d+(?= USD) → " USD"の前の数字
(?!abc)
否定先読み — abcが後ろに続かない場合にマッチ\d+(?! USD) → USD以外の前の数字
(?<=abc)
肯定後読み — abcが前にある場合にマッチ(?<=\$)\d+ → $の後の数字
(?<!abc)
否定後読み — abcが前にない場合にマッチ(?<!\$)\d+ → $以外の後の数字
フラグ (Flags / Modifiers)
g
グローバル — 最初だけでなく全てのマッチを検索/\d+/g → 全ての数字
i
大文字・小文字を区別しない/hello/i → "Hello", "HELLO"
m
複数行 — ^と$を各行の先頭・末尾に対応させる^\w+/m → 各行の先頭の単語
s
dotAll — ドット(.)が改行もマッチするようになる/.+/s → 複数行にまたがるマッチ
u
Unicode — Unicode完全対応モード/\p{L}+/u → Unicode文字
特殊文字のエスケープ (Escaping)
\.
リテラルのドット(特殊文字は\でエスケープ)\. → "3.14"のドット部分
\( \) \[ \]
リテラルの括弧・角括弧\(\d+\) → "(42)"

よく使う正規表現パターン集

メールアドレス
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}
標準的なメールアドレス形式(サブドメイン・プラスアドレス対応)をマッチします。
HTTP/HTTPS URL
https?:\/\/(?:www\.)?[-\w]+(?:\.[-\w]+)+[^\s]*
httpおよびhttpsのURLをパス・クエリ付きでマッチします。
日本の電話番号
0\d{1,4}[-\s]?\d{1,4}[-\s]?\d{4}
固定電話・携帯電話を含む一般的な日本の電話番号形式をマッチします。
日付 ISO形式 (YYYY-MM-DD)
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])
月・日の範囲チェック付きISO 8601日付形式をバリデーションします。
IPv4アドレス
\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b
各オクテット0〜255の範囲チェック付きIPv4アドレスをバリデーションします。
16進数カラーコード
#(?:[0-9a-fA-F]{3}){1,2}\b
#で始まる3桁および6桁の16進数カラーコードをマッチします。
日本の郵便番号
\d{3}-?\d{4}
ハイフンあり・なし両方の日本の郵便番号形式をマッチします。
強力なパスワード
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}
小文字・大文字・数字・記号をそれぞれ1文字以上含む8文字以上のパスワード。
📊
freee会計で請求書・帳簿をラクに管理
正規表現でデータ抽出・加工を自動化しても、最終的な帳簿管理はfreeeにお任せ。エンジニア・フリーランスに人気のクラウド会計ソフトです。初月無料でお試しいただけます。
freeeを無料で試す

正規表現の使い方

**正規表現(Regex)**とは、文字列の検索パターンを定義する文字列の連続です。ほぼすべてのプログラミング言語やテキストエディタで、入力バリデーション・データ抽出・検索置換・文字列解析などのために活用されています。

基本概念:

  • 貪欲 vs. 非貪欲*+{n,m} はデフォルトで貪欲(できるだけ長くマッチ)です。末尾に ? を付ける(例:*?+?)と非貪欲(できるだけ短くマッチ)になります。HTMLタグや引用符付き文字列のパースで重要です。
  • キャプチャグループ vs. 非キャプチャグループ — マッチした文字列を後で参照($1 など)する場合は (...) を使用します。グループ化だけが目的で値を保存しない場合は (?:...) を使用します。
  • アンカーと複数行フラグ^$ はデフォルトで文字列全体の先頭・末尾にマッチします。m フラグを有効にすると、各行の先頭・末尾にマッチするようになります。
  • 先読み・後読みはゼロ幅(?=foo)(?<=foo) は条件を検証するだけで文字を消費しません。そのため、周囲の文字をマッチ結果に含めずに条件付きマッチが行えます。

関連ツール

正規表現をリアルタイムテスト → 正規表現テスター

SQLクエリを整形 → SQLフォーマッター

テキストの差分を確認 → テキスト差分チェッカー