CheatSheet
日本語 icon日本語English iconEnglish
チートシートとはカンニングペーパーのことです。それが転じて、本来覚えることをまとめておいたものです。
要点をすぐに参照できるようにまとめてみました。

正規表現

エンジニアのためのWebチートシート

正規表現(Regular Expression)は、文字列のパターンマッチングに使われる強力なツールです。 基本構文、量指定子、文字クラス、アンカー、グループ化、先読み・後読みなどをチートシートにまとめました。

基本パターン

ドット(.)

  • 改行を除く任意の1文字にマッチします。

    a.c     → "abc", "a1c", "a c"
    ..      → 任意の2文字

エスケープ

  • 特殊文字をリテラルとして扱うにはバックスラッシュでエスケープします。

    \.    → ドット(.)
    \*    → アスタリスク(*)
    \+    → プラス(+)
    \?    → クエスチョン(?)
    \(    → 開き括弧
    \[    → 開き角括弧
    \\   → バックスラッシュ(\)
    \^    → キャレット(^)
    \$    → ドル記号($)
    \|    → パイプ(|)

選択(|)

  • いずれかのパターンにマッチします。

    cat|dog     → "cat" or "dog"
    red|blue|green → いずれか

文字クラス

文字クラス [ ]

  • 角括弧内のいずれかの文字にマッチします。

    [abc]     → "a", "b", "c"のいずれか
    [0-9]     → 数字1文字
    [a-z]     → 小文字アルファベット1文字
    [A-Z]     → 大文字アルファベット1文字
    [a-zA-Z]  → アルファベット1文字
    [0-9a-f]  → 16進数の1文字

否定文字クラス [^ ]

  • 角括弧内に含まれない文字にマッチします。

    [^abc]    → "a","b","c"以外の1文字
    [^0-9]    → 数字以外の1文字
    [^\s]     → 空白以外の1文字

ショートハンド

  • よく使う文字クラスの省略記法です。

    \d    → 数字 [0-9]
    \D    → 数字以外 [^0-9]
    \w    → 単語文字 [a-zA-Z0-9_]
    \W    → 単語文字以外 [^a-zA-Z0-9_]
    \s    → 空白文字 [ \t\n\r\f]
    \S    → 空白以外 [^ \t\n\r\f]

量指定子

貪欲(Greedy)量指定子

  • できるだけ多くマッチします(デフォルト)。

    *     → 0回以上
    +     → 1回以上
    ?     → 0回または1回
    
    a*    → "", "a", "aa", "aaa"...
    a+    → "a", "aa", "aaa"...
    a?    → "", "a"

怠惰(Lazy)量指定子

  • できるだけ少なくマッチします。?を付けます。

    *?    → 0回以上(最小)
    +?    → 1回以上(最小)
    ??    → 0回または1回(最小)
    
    "<.*>"  → "<b>bold</b>"全体
    "<.*?>" → "<b>"のみ

回数指定

  • 繰り返しの回数を具体的に指定します。

    {3}    → ちょうど3回
    {2,5}  → 2〜5回
    {2,}   → 2回以上
    
    \d{3}       → 3桁の数字
    [a-z]{2,4}  → 2〜4文字の小文字

アンカー & 境界

行頭 ^ / 行末 $

  • 文字列または行の先頭・末尾にマッチします。

    ^hello    → 行頭の "hello"
    world$    → 行末の "world"
    ^exact$   → "exact" のみ(完全一致)

単語境界 \b

  • 単語の境界(単語文字と非単語文字の間)にマッチします。

    \bcat\b   → "cat" (単語として)
                 "catfish" にはマッチしない
    \Bcat     → "catfish"の"cat"にマッチ
                 単独の"cat"にはマッチしない

グループ & 参照

キャプチャグループ ( )

  • グループ化してキャプチャし、後方参照で使用できます。

    (abc)       → "abc"をキャプチャ
    (\d{3})-(\d{4})
                → "090-1234" の "090" と "1234"

名前付きグループ

  • グループに名前を付けてキャプチャします。

    (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
    → year: "2024", month: "01", day: "15"

後方参照

  • キャプチャしたグループを参照します。

    (\w+)\s\1     → 同じ単語の繰り返し
                    "hello hello" にマッチ
    \k<name>      → 名前付きグループの参照

非キャプチャグループ (?: )

  • グループ化のみ行い、キャプチャしません。

    (?:abc)     → グループ化のみ、キャプチャしない
    (?:http|https)://
                → プロトコル部分をグループ化

先読み & 後読み

肯定先読み (?= )

  • 指定パターンが後に続く位置にマッチします(消費しない)。

    \d+(?=円)    → "100円"の"100"にマッチ
                  "円"は消費しない
    foo(?=bar)   → "foobar"の"foo"にマッチ

否定先読み (?! )

  • 指定パターンが後に続かない位置にマッチします。

    \d+(?!円)    → 後ろに"円"がない数字
    foo(?!bar)   → "foobar"にはマッチしない
                  "foobaz"の"foo"にマッチ

後読み (?<= ) / (?<! )

  • 指定パターンが前にある/ない位置にマッチします。

    (?<=\$)\d+   → "$100"の"100"にマッチ
    (?<=@)\w+    → "user@host"の"host"
    
    (?<!\$)\d+   → 前に$がない数字にマッチ

フラグ

正規表現の動作を変更するフラグです。

フラグ説明
g

グローバル検索(すべてのマッチを検索)

i

大文字小文字を区別しない

m

複数行モード(^と$が各行に適用)

s

ドットが改行にもマッチ

u

Unicode対応

d

マッチのインデックス情報を生成

よく使うパターン

メールアドレス

  • メールアドレスの基本的なパターンです。

    [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

URL

  • URLの基本的なパターンです。

    https?://[\w/:%#\$&\?\(\)~\.=\+\-]+

電話番号(日本)

  • 日本の電話番号パターンです。

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

日付(YYYY-MM-DD)

  • 日付形式のパターンです。

    \d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

IPアドレス(IPv4)

  • IPv4アドレスのパターンです。

    (?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}
    (?:25[0-5]|2[0-4]\d|[01]?\d\d?)

引用・参考リンク

Related Goods

  • 正規表現の構文をコンパクトにまとめたリファレンス。手元に置いておくと便利な一冊です。
    正規表現の構文をコンパクトにまとめたリファレンス。手元に置いておくと便利な一冊です。
    詳細をみる
  • マンガ×チャットスタイルで正規表現を楽しく学べます。初心者にもおすすめ!
    マンガ×チャットスタイルで正規表現を楽しく学べます。初心者にもおすすめ!
    詳細をみる
  • ケーブルに取り付け可能なTypeCとLightningの変換アダプタです。
スタイリッシュなデザインで、Apple製品との相性抜群です。
    ケーブルに取り付け可能なTypeCとLightningの変換アダプタです。 スタイリッシュなデザインで、Apple製品との相性抜群です。
    詳細をみる
  • お気に入りのサウンドデバイスをすぐ取り出せる位置にディスプレイさせておくことができます。
    お気に入りのサウンドデバイスをすぐ取り出せる位置にディスプレイさせておくことができます。
    詳細をみる

WebTerm - Recommended tools

WebTermは、ブラウザでLinuxコマンド・Gitコマンドを安全に実行でき、チュートリアル式で学べるターミナルサンドボックスです。
AIコーディングツールの普及に伴い、CLIの基礎知識を身につける重要性は増しています。実際のターミナルを操作するのに抵抗がある方でも、WebTermはローカル環境を壊す心配がありません。「会員登録不要・無料」で利用でき、学習環境として最適です。

WebTerm Logo

WebTerm

Browser Terminal Sandbox for Learning CLI

開く

All Cheatsheets

エンジニア・プログラマー向けの便利なチートシートを多数まとめています(SP/Tablet/PC対応)
すべてのチートシートを見る