正規表現の基本的な書き方一覧。よく忘れるのでメモとして記載します。
正規表現の書き方 | マッチする文字 |
abc | abc |
abc|aec | abc, aec |
a(b|e)c | abc, aec |
a[be]c | abc, aec |
a[abcde]c | aac, abc, acc, adc, aec |
a[a-e]c | aac, abc, acc, adc, aec |
a[a-cX-Z]c | aac, abc, acc, aXc, aYc, aZc |
abcd?e | abce, abcde |
abcd+e | abcde, abcdde, abcddde, … |
abcd*e | abce, abcde, abcdde, abcddde, … |
a{2} | aa |
a{2}b{4} | aabbbb |
a{2,} | aa, aaa, aaaa, aaaaa, … |
a{2,4} | aa, aaa, aaaa |
[0-9] | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9(数値のみ) |
[1-36-9] | 1, 2, 3, 6, 7, 8, 9 |
\d | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9(数値のみ) |
\D | 数値以外 |
[^0-9] | 数値以外([](カッコ)内先頭の^(キャレット)は否定) |
[^\D] | 数値のみ(数値以外の否定は数値のみ) |
0[89]0-\d{4}-\d{4} | 携帯番号(080-xxxx-xxxx, 090-xxxx-xxxx) |
^abc | 行の先頭のabc |
abc$ | 行の末尾のabc |
^abc$ | abcだけの行(行の先頭も行の末尾もabc) |
正規表現 基本的な書き方解説
上記の内容をざっくり解説します。
abc|aec
“|”(パイプ)で挟むと または(OR) 指定できる。abc, aec にマッチする。
a(b|e)c
“()”(かっこ)内の文字を”|”で挟むと または(OR) 指定できる。abc, aec にマッチする。
a[be]c
“[]”(角かっこ)内の文字を または(OR) 指定できる。角カッコの場合、パイプを挟む必要はない。abc, aec にマッチする。
a[abcde]c
ひとつ上の正規表現の文字数を増やした正規表現。 aac, abc, acc, adc, aec にマッチする。
a[a-e]c
“[]”内でハイフンで文字や数値を指定すると範囲指定できる。上記は、”a” から “e” までの小文字の文字列を指定している。aac, abc, acc, adc, aec にマッチする。
a[a-cX-Z]c
上記正規表現の範囲指定を2つ指定している正規表現。”a” から “c” の小文字、 “X” から “Z” の大文字を指定している。 aac, abc, acc, aXc, aYc, aZc にマッチする。
abcd?e
対象文字の後に、”?”(クエスチョンマーク)を指定すると、 1文字あるまたはなくても、つまり 0回 または 1回 文字があれば、マッチする。上記の場合、dがあってもなくてもマッチするため、 abce, abcde にマッチする。
abcd+e
対象文字の後に、”+”(プラス)を指定すると、対象文字が1文字以上連続してあれば、つまり 1回以上 文字があればマッチする。上記の場合、dが1文字以上あればマッチするため、 abcde, abcdde, abcddde, … にマッチする。
abcd*e
対象文字のあとに、”*”(アスタリスク)を指定すると、対象文字が1文字以上連続してあるまたはなくても、つまり 0回 または 1回以上 文字があればマッチする。上記の場合、abce, abcde, abcdde, abcddde, … にマッチする。
a{2}
対象文字のあとに、”{n}”(波カッコ、nは数字)を指定すると、対象文字が連続してn回ある場合、マッチする。上記の場合、aa にマッチする。
a{2}b{4}
上記の複数指定した正規表現。上記の場合、”a” を 2回、”b” を 4回 なので、aabbbb にマッチする。
a{2,}
対象文字のあとに、”{n,}”を指定すると、対象文字が連続して n回以上 ある場合、マッチする。上記の場合、aa, aaa, aaaa, aaaaa, … にマッチする。
a{2,4}
対象文字のあとに、”{n, m}”を指定すると、対象文字が連続して n回以上 かつ m回以下 ある場合、マッチする。上記の場合、aa, aaa, aaaa にマッチする。
[0-9]
“[]”(角カッコ)の範囲していで、数値を指定した正規表現。”0” から “9” までの数値を指定する。上記の場合、0, 1, 2, 3, 4, 5, 6, 7, 8, 9(数値のみ)にマッチする。
[1-36-9]
上記の範囲指定を複数した正規表現。”1″ から “3” または “6” から “9” の数値にマッチする。上記の場合、1, 2, 3, 6, 7, 8, 9 にマッチする。
\d
数値の場合のみにマッチする。”[0-9]” と同様。上記の場合、0, 1, 2, 3, 4, 5, 6, 7, 8, 9(数値のみ)にマッチする。
\D
数値以外の文字、記号にマッチする。”[^0-9]” や “[^\d]”といった数値の否定と同様。
[^0-9]
“[]”(角カッコ)内の先頭に記載した “^”(キャレット)は否定の正規表現。”[0-9]”で数値を指定し、それを否定する。[^\D]も同様。上記の場合、数値以外にマッチする。
0[89]0-\d{4}-\d{4}
携帯番号(080-xxxx-xxxx, 090-xxxx-xxxx)を指定した正規表現。”080″ または “090” で始まり、”-“(ハイフン)で区切られた数値4桁がある場合、マッチする。
^abc
“^”(キャレットやチルドやハットと呼ぶ)が行の先頭を指定する。上記の場合、行の先頭にある “abc” にマッチする。
abc$
“$”(ドル)が行の末尾を指定する。上記の場合、行の末尾にある “abc” にマッチする。
^abc$
行の先頭と末尾にある “abc” つまり 行に “abc” のみの文字列にマッチする。