ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Web開発 - 正規表現

初めに

 本記事は、正規表現でよく使われる記法をまとめます。

正規表現とは

 正規表現(Regular Expression)とは、

いくつかの文字列を一つの形式で表現するための表現方法

です。

正規表現の用途

 正規表現は、次のような用途で使われます。

  • 文字列の検索
  • 文字列の置換
  • 文字列の分割
  • 文字列の検証

正規表現の記法

記号意味
^行頭^abc は「abc」で始まる文字列にマッチ
$ 行末abc$は「abc」で終わる文字列にマッチ
.任意の1文字. は任意の1文字にマッチ
[abc]指定した文字のいずれか1文字[abc] は「a」、「b」、「c」のいずれかにマッチ
[^abc]指定した文字以外のいずれか1文字[^abc] は「a」、「b」、「c」以外のいずれかにマッチ
[A-Z]A, B, ..., Z のうちいずれか1文字[0-9]:0から9までの整数のうち1文字
[ぁ-ん]:平仮名
なども可能
*直前の文字が0回以上繰り返される.* 0文字以上の任意の文字列
+直前の文字が1回以上繰り返される.+ は1文字以上の任意の文字列
?直前の文字が0回または1回繰り返されるabc? は「ab」、「abc」にマッチ
{n}直前の文字がn回繰り返されるabc{3} は「abcabcabc」にマッチ
{n,}直前の文字がn回以上繰り返されるabc{3,} は「abcabcabc...」にマッチ
{n,m}直前の文字がn回以上m回以下繰り返されるabc{2,5} は「abcabc」、「abcabca」、「abcabcab」にマッチ
( )マッチする部分をキャプチャする(abc) は「abc」をキャプチャする
\n改行文字\n は改行文字にマッチ
\tタブ文字\t はタブ文字にマッチ
\r復帰文字\r は復帰文字にマッチ
\s空白文字\s はスペース、タブ、改行文字などの空白文字にマッチ
\d数字\d は数字にマッチ
\w英数字\w は英数字にマッチ
\W英数字以外の文字\W は英数字以外の文字にマッチ
\x16進数\x0a は改行文字(16進数では0x0a)にマッチ
\u16進数(Unicode\u0061 は小文字「a」(16進数では0x0061)にマッチ

注意点

 平仮名の文字コードは次のような順になっています。

ぁ, あ, ぃ, い, ぅ, う, ぇ, え, ぉ, お, か, が, き, ぎ, く, ぐ, け, げ, こ, ご, さ, ざ, し, じ, す, ず, せ, ぜ, そ, ぞ, た, だ, ち, ぢ, っ, つ, づ, て, で, と, ど, な, に, ぬ, ね, の, は, ば, ぱ, ひ, び, ぴ, ふ, ぶ, ぷ, へ, べ, ぺ, ほ, ぼ, ぽ, ま, み, む, め, も, ゃ, や, ゅ, ゆ, ょ, よ, ら, り, る, れ, ろ, ゎ, わ, ゐ, ゑ, を, ん

 そのため、[ぁ-ん]には濁点が含まれています。

 このような事例はアルファベットにもあります。

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \\, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z

 アルファベットの大文字と小文字の間には、[ や ] があります。そのため、[A-z]には、アルファベット以外の記号が含まれてしまいます。