正規表現チートシート

パターンの記号をクリックでコピー。Python/JavaScript/grep共通で使える基本パターン集です。

🔹 基本パターン

パターン意味マッチ例
.任意の1文字(改行以外)a.c → abc, a1c, a!c
*0回以上の繰り返しab*c → ac, abc, abbc
+1回以上の繰り返しab+c → abc, abbc(acは不可)
?0回または1回colou?r → color, colour
[abc]文字クラス(a, b, cのどれか)[aeiou] → 母音1文字
[a-z]範囲指定[0-9] → 数字1文字
[^abc]否定(a, b, c以外)[^0-9] → 数字以外
(a|b)OR(aまたはb)(cat|dog) → cat, dog

⚓ アンカー(位置指定)

パターン意味使用例
^行の先頭^Hello → 行頭のHello
$行の末尾end$ → 行末のend
\b単語の境界\bcat\b → "cat"単独
\B単語境界以外\Bcat\B → scatter内のcat
^と$を組み合わせると「行全体」にマッチ: ^Hello World$

🔢 量指定子

パターン意味使用例
{n}ちょうどn回a{3} → aaa
{n,}n回以上a{2,} → aa, aaa, aaaa...
{n,m}n回以上m回以下a{2,4} → aa, aaa, aaaa
*?0回以上(最少マッチ)a.*?b → 最初のa...b
+?1回以上(最少マッチ)a.+?b → 最短のa...b
? を付けると「欲張らない(最少)マッチ」になります。HTMLタグの抽出などで便利。

🔤 文字クラスの短縮形

パターン意味同等の表現
\d数字1文字[0-9]
\D数字以外[^0-9]
\w英数字+アンダースコア[a-zA-Z0-9_]
\W英数字+アンダースコア以外[^a-zA-Z0-9_]
\s空白文字(スペース、タブ、改行)[ \t\r\n\f]
\S空白文字以外[^ \t\r\n\f]

🔀 グループとキャプチャ

パターン意味使用例
(abc)キャプチャグループ(\d+)-(\d+) → グループ1, 2
(?:abc)非キャプチャグループ(?:\d{3})- → キャプチャしない
\1後方参照(1番目のグループ)(\w)\1 → "aa", "bb"
(?<name>...)名前付きキャプチャ(?<year>\d{4})

🛡 エスケープシーケンス

パターン意味備考
\.ドット(文字として). だけだと「任意文字」になる
\\バックスラッシュ文字列内では \\\\ と書く
\*アスタリスク量指定子ではなく文字として
\(開き括弧グループではなく文字として
\[開き角括弧文字クラスではなく文字として
正規表現で特別な意味を持つ文字(. * + ? ^ $ | \ ( ) [ ] { })を文字として使いたい場合は \ でエスケープ。

📋 よく使う実用パターン

用途パターン
メールアドレス(簡易)[\w.+-]+@[\w-]+\.[\w.-]+
URL(簡易)https?://[\w./%-]+
電話番号(日本)0\d{1,4}-?\d{1,4}-?\d{4}
日付(YYYY-MM-DD)\d{4}-\d{2}-\d{2}
IPアドレス(簡易)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
HTMLタグ<[^>]+>
郵便番号(日本)\d{3}-\d{4}
16進数カラーコード#[0-9a-fA-F]{6}

💻 言語別の使い方

Python
import re
re.findall(r'\d+', 'abc123def')  # ['123']
re.sub(r'\s+', ' ', text)         # 連続空白を1つに
JavaScript
'abc123def'.match(/\d+/g)        // ['123']
text.replace(/\s+/g, ' ')         // 連続空白を1つに
grep
grep -E '\d{4}-\d{2}-\d{2}' file.txt
← ガイド一覧に戻る