コンテンツにスキップ

正規表現

正規表現についてのメモ
正規表現をチェックするサイトについてはこちらでまとめた

本記事における正規表現の検証はregex101にて言語ECMAScript(JavaScript)を指定して行った

そのため、他言語では結果が異なる場合があるので注意すること

メタ文字

メタ文字とは正規表現の中で特別な意味を持つ文字や記号
メタ文字自身を指定するときはエスケープ処理をする

. ドット == 改行を除く任意の一文字
dot

文字種

\d == 0-9
\w == a-z, A-Z, 0-9, _
\s == スペース, タブ改行

// 大文字 == それぞれの否定になる
\D == \d以外の一文字
\W == \w以外の一文字
\S == \s以外の一文字
数値を指定
d

aから始まる文字列を指定
d

量指定子

直前の文字を何回繰り返すかを指定する

{n} == n個
{min, max} == min以上max以下
{min,} == min以上
num

記号でも{n}{min,}などを表現できる

? == {0,1}
+ == {1,}
* == {0,}
q

アンカー

^  == 行の先頭
$  == 行の末尾
\b \b == 間の単語を指定
^ キャレット(ハット)で先頭の数値を指定
hat

$ で末尾の数値を指定
hat

\b \bで囲んだ単語を指定
boundary

選択子

どちらかを指定

abc|123  == abc or 123
dot

改行とタブ

\t         == タブ
\r\n       == 改行(Windows)
\r         == 改行(v9までのmacOS)
\n         == 改行(Unixv10以降のmacOS)
\r\n|\n|\r == 改行(すべて)
1個以上の改行を指定して、replaceメソッドで置換するようなシーンに利用できる

tab newLine

キャプチャグループ

()で囲んだ単語を1つのグループとして記憶する

(\w+) == 1つ以上の単語
番号で取り出したり、名前をつけて取り出す(名前付きキャプチャ)ことも可能

後方参照

() => \1, \2 と番号で後方の単語にアクセスする
after

文字クラス [ ]

[ ]で囲んで使用する

[abc]  == a, b, cのどれか一文字を指す
square brackets

[^a] == aの否定[]の直後しか使えない
not

[a-b] == abまでの範囲を指定する文字コード表の順に基づく
not

  • 文字クラス内で^-]\を使うときはエスケープが必要
  • ^[^のように最初に使用しない場合は、リテラルとして扱われる
  • [-のように範囲を指定する対象がない場合は、リテラルとして扱われる

エスケープ

メタ文字をエスケープして、リテラル(通常の文字)として検索する
バックスラッシュは option + ¥

\ バックスラッシュ == 次の文字をエスケープする
dot

Reference

MDN 正規表現
.NETの正規表現
メタ文字
文字コード
グループと範囲 MDN
キャプチャグループ
正規表現でのコンストラクトのグループ化