あなたがずっと欲しかった正規表現(RegEx)のチートシート
正規表現(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
)を加えると a
と A
の両方に一致します。
- 文字: d
- 解釈: 部分文字列のマッチでインデックスを生成
- 文字: g
- 解釈: グローバル検索
- 文字: i
- 解釈: 大文字・小文字を区別しない検索
- 文字: m
- 解釈: 複数行検索
- 文字: s
- 解釈: .は改行文字も一致させる
- 文字: u
- 解釈: パターンをUnicodeコードポイントの並びとして扱う
- 文字: y
- 解釈: 現在位置から始まる検索を行うスティッキー検索を実行
これで全てです!
個人的なファイナンスが難しく感じる?私のInstagramをチェックして Dollar Ninja になってください。
トップクラスのフロントエンド開発フリーランサーが必要?Upworkで私にコンタクトしてください。
私が何をしているか見たい?私の 個人ウェブサイトとGitHub をチェックしてください。
つながりたい? LinkedIn で私に連絡してください。
私はデジタルノマドとしてバリ島、インドネシアに引っ越しました。何をしているかチェックしたいなら Instagram をフォローしてください。
Dev のブログで毎週新しいヒントをフォローしてください。
よくある質問
これは私がよく受け取る質問です。なので、このFAQセクションで問題が解決することを願っています。
-
初心者ですが、どうやってフロントエンドWeb開発を学ぶべきですか?
以下の記事を参考にしてください: -
メンターになってもらえますか?
ごめんなさい、既にたくさんの仕事があって、誰かをメンターする時間が取れません。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/ruppysuppy/the-regular-expression-regex-cheat-sheet-you-always-wanted-1c8h