あなたがずっと欲しかった正規表現(RegEx)のチートシート

The Regular Expression (RegEx) Cheat Sheet you always wantedのカバー画像

正規表現(RegEx)はめちゃくちゃ便利ですが、これをマスターするのは超ハードですよね!ここでは、RegEx文法のものすごくポピュラーなユースケースを提供するチートシートを提供します。これがあれば、RegExの文法をさっとみたい時に役立つでしょう!

文字


  • 文字: [abc], [a-c]
    • 解釈: 指定された文字/文字の範囲に一致
    • 例: abc[abc]
    • マッチする例: abca, abcb, abcc
  • 文字: [^abc], [^a-c]
    • 解釈: 指定された文字/文字の範囲を否定して一致
    • 例: abc[^abc]
    • マッチする例: abcd, abce, abc1, ...
  • 文字: .
    • 解釈: 改行を除く任意の文字
    • 例: bc.
    • マッチする例: bca, bcd, bc1, b., ...
  • 文字: \d
    • 解釈: 任意の数字の文字([0-9]と同じ)
    • 例: c\d
    • マッチする例: c1, c2, c3 ...
  • 文字: \D
    • 解釈: 数字でない任意の文字([^0-9]と同じ)
    • 例: c\D
    • マッチする例: ca, c., c* ...
  • 文字: \w
    • 解釈: 英数字の文字([A-Za-z0-9_]と同じ)
    • 例: a\w
    • マッチする例: aa, a1, a_ ...
  • 文字: \W
    • 解釈: 英数字でない文字([^A-Za-z0-9_]と同じ)
    • 例: a\W
    • マッチする例: a), a$, a? ...
  • 文字: \s
    • 解釈: 通常は空白用ですが、改行やタブなどにも使えます
    • 例: a\s
    • マッチする例: a
  • 文字: \S
    • 解釈: 空白やそれに準じる(改行やタブなど)ではない文字
    • 例: a\S
    • マッチする例: aa
  • 文字: \t
    • 解釈: 水平タブに一致
    • 例: T\tab
    • マッチする例: T ab
  • 文字: \r
    • 解釈: キャリッジリターンに一致
    • 例: AB\r\nCD
    • マッチする例: ABCD
  • 文字: \n
    • 解釈: 改行に一致
    • 例: AB\r\nCD
    • マッチする例: ABCD
  • 文字: \
    • 解釈: 特殊文字をエスケープ
    • 例: \d
    • マッチする例: 0, 1, ...
  • 文字: x|y
    • 解釈: "x"または"y"のどちらかに一致
    • 例: a|b
    • マッチする例: a, b

アサーション


  • 文字: ^
    • 解釈: 文字列の開始か行の開始(複数行モードに依存)
    • 例: ^abc.*
    • マッチする例: abc, abd, abcd, ...
  • 文字: $
    • 解釈: 文字列の終わりか行の終わり(複数行モードに依存)
    • 例: .*xyz$
    • マッチする例: xyz, wxyz, abcdxyz, ...
  • 文字: \b
    • 解釈: 単語の文字が後に続く単語文字ではない場合に一致
    • 例: My.*\bpie
    • マッチする例: My apple pie, ...
  • 文字: \B
    • 解釈: 単語境界でないものに一致
    • 例: c.*\Bcat
    • マッチする例: copycat, ...
  • 文字: x(?=y)
    • 解釈: 先読みアサーション: "x"が"y"に続く場合に限り"x"に一致
    • 例: \d+(?=€)
    • マッチする例: $1 = 0.98€, ...
  • 文字: x(?!y)
    • 解釈: 否定的先読みアサーション: "x"が"y"ではないものに続く場合に限り"x"に一致
    • 例: \d+\b(?!€)
    • マッチする例: $1 = 0.98€ , ...
  • 文字: (?<=y)x
    • 解釈: 後読みアサーション: "x"が"y"に先行する場合に限り"x"に一致
    • 例: (?<=\d)\d
    • マッチする例: $1 = 0.98€, ...
  • 文字: (?<!y)x
    • 解釈: 否定的後読みアサーション: "x"が"y"に先行しない場合に限り"x"に一致
    • 例: (?<!\d)\d
    • マッチする例: $1 = 0.98€, ...

グループ


  • 文字: (x)
    • 解釈: キャプチャグループ: xに一致し、その一致を記憶
    • 例: A(nt|pple)
    • マッチする例: Ant (記憶するのは"nt")
  • 文字: (?<name>x)
    • 解釈: 名前付きキャプチャグループ: xに一致し、指定された変数に格納
    • 例: A(?<m>nt|pple)
    • マッチする例: Ant (m = "nt")
  • 文字: (?:name>x)
    • 解釈: 非キャプチャグループ: xに一致し、その一致を記憶しない
    • 例: A(?:nt|pple)
    • マッチする例: Ant
  • 文字: \n
    • 解釈: n番目の括弧の中の最後に一致する部分文字列への後方参照
    • 例: (\d)+(\d)=\2+\1
    • マッチする例: 5+6=6+5

量指定子


  • 文字: x*
    • 解釈: 前にあるアイテム"x"を0回以上一致
    • 例: a*
    • マッチする例: a, aa, aaa, ...
  • 文字: x+
    • 解釈: 前にあるアイテム"x"を1回以上一致、{1,}と同じ
    • 例: a+
    • マッチする例: aa, aaa, aaaa, ...
  • 文字: x?
    • 解釈: 前にあるアイテム"x"を0回か1回一致
    • 例: ab?
    • マッチする例: a, ab
  • 文字: x{n}
    • 解釈: 前にあるアイテム"x"をn回一致させる(nは正の整数)
    • 例: ab{5}c
    • マッチする例: abbbbbc
  • 文字: x{n,}
    • 解釈: 前にあるアイテム"x"を少なくともn回一致させる(nは正の整数)
    • 例: ab{2,}c
    • マッチする例: abbc, abbbc, abbbbc, ...
  • 文字: x{n,m}
    • 解釈: 前にあるアイテム"x"を少なくともn回、多くてm回一致させる(n<m)
    • 例: ab{2,3}c
    • マッチする例: abbc, abbbc

注意

デフォルトでは量指定子貪欲です(できるだけ多くの文字列に一致しようとします)。量指定子の後に?を入れると、非貪欲になります(一致を見つけるとすぐに停止します)。

例: テスト文字列 12345\d+?1 だけに一致し、\d+ だと文字列全体の 12345 に一致します。

フラグ


フラグ正規表現の最後に置きます。正規表現の振舞いを変更するために使われます。

例: テスト文字列 a/a/a にだけ一致しますが、フラグ i/a/i)を加えると aA の両方に一致します。

  • 文字: d
    • 解釈: 部分文字列のマッチでインデックスを生成
  • 文字: g
    • 解釈: グローバル検索
  • 文字: i
    • 解釈: 大文字・小文字を区別しない検索
  • 文字: m
    • 解釈: 複数行検索
  • 文字: s
    • 解釈: .は改行文字も一致させる
  • 文字: u
    • 解釈: パターンをUnicodeコードポイントの並びとして扱う
  • 文字: y
    • 解釈: 現在位置から始まる検索を行うスティッキー検索を実行

これで全てです!

個人的なファイナンスが難しく感じる?私のInstagramをチェックして Dollar Ninja になってください。

トップクラスのフロントエンド開発フリーランサーが必要?Upworkで私にコンタクトしてください。

私が何をしているか見たい?私の 個人ウェブサイトGitHub をチェックしてください。

つながりたい? LinkedIn で私に連絡してください。

私はデジタルノマドとしてバリ島、インドネシアに引っ越しました。何をしているかチェックしたいなら Instagram をフォローしてください。

Dev のブログで毎週新しいヒントをフォローしてください。

よくある質問

これは私がよく受け取る質問です。なので、このFAQセクションで問題が解決することを願っています。

  1. 初心者ですが、どうやってフロントエンドWeb開発を学ぶべきですか?
    以下の記事を参考にしてください:

    1. フロントエンド開発のロードマップ
    2. フロントエンドプロジェクトのアイデア
  2. メンターになってもらえますか?

    ごめんなさい、既にたくさんの仕事があって、誰かをメンターする時間が取れません。

    こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
    https://dev.to/ruppysuppy/the-regular-expression-regex-cheat-sheet-you-always-wanted-1c8h