正規表現
正規表現の作成
以下の方法で、Regexp
クラスのインスタンスを生成できる。
- スラッシュ
/
で囲む。
Regexp.new
を使用する。
- パーセント記法 (
%r
) を使用する。
/Ruby/ # => /Ruby/
Regexp.new("Ruby") # => /Ruby/
%r[Ruby] # => /Ruby/
正規表現記号
メタ文字 |
説明 |
正規表現パターン例 |
一致する文字列の例 |
. |
任意の 1 文字に一致 |
a.b |
"axb" , "ayb" , "azb" |
[] |
文字の集合で一致 |
[aiueo] |
"a" , "o" |
() |
グループを作成し、キャプチャ対象を指定 |
(abc)+ |
"abc" , "abcabc" |
^ |
文字列の先頭に一致 |
^start |
"start of string" |
$ |
文字列の末尾に一致 |
end$ |
"the end" |
\ |
特殊文字のエスケープ |
\\ |
\ |
| |
選択肢のいずれかに一致 |
part1|part2 |
"part1" , "part2" |
繰り返し表現
メタ文字 |
説明 |
正規表現パターン例 |
一致する文字列の例 |
* |
直前の文字またはグループが 0 回以上繰り返す |
ab*c |
"ac" , "abc" , "abbc" |
+ |
直前の文字またはグループが 1 回以上繰り返す |
ab+c |
"abc" , "abbc" |
? |
直前の文字またはグループが 0 回または 1 回以上繰り返す |
colou?r |
"color" , "colour" |
{n} |
直前の文字またはグループが n 回繰り返す |
a{3} |
"aaa" |
{n,} |
直前の文字またはグループが n 回以上繰り返す |
a{2,} |
"aa" , "aaa" , "aaaa" |
{,n} |
直前の文字またはグループが n 回以下繰り返す |
a{,2} |
"a" , "aa" |
{n,m} |
直前の文字またはグループが n 回以上、m 回以下 繰り返す |
a{2,3} |
"aa" , "aaa" |
正規表現特殊文字
特殊文字 |
説明 |
正規表現パターン例 |
例 |
\d |
数字に一致 |
\d+ |
/\d/ === "123" |
\D |
数字以外の文字に一致 |
\D+ |
/\D/ === "Hello, World!" |
\w |
単語文字(英字、数字、アンダースコア)に一致 |
\w+ |
/\w+/ === "user123" |
\W |
単語文字以外の文字に一致 |
\W+ |
/\W+/ === "!@#$%" |
\s |
空白文字(スペース、タブ、改行など)に一致 |
\s+ |
/\s+/ === " " |
\S |
空白文字以外の文字に一致 |
\S+ |
/\S+/ === "Hello,World!" |
\A |
文字列の先頭に一致 |
\AHello |
/\AHello/ === "Hello, World!" |
\z |
文字列の末尾に一致 |
World!\z |
/World!\z/ === "Hello, World!" |
\Z |
文字列の末尾または最後の改行の前に一致 |
World!\Z |
/World!\Z/ === "Hello, World!\n" |
文字(バックスラッシュ記法)
記法 |
意味 |
\t |
水平タブ |
\v |
垂直タブ |
\n |
改行 |
\r |
復帰 |
\b |
バックスペース |
\f |
改ページ |
\a |
ペル |
\e |
エスケープ文字 |
\nnn |
符号化バイト値の 8 進数表現 (nnn の 8 進数 3 文字で表現) |
\xHH |
符号化バイト値の 16 進数表現 (HH の 16 進数 2 文字で表現) |
\cx , \C-x |
制御文字 (x は a から z までのいずれかの文字) |
\M-x |
メタ |
\M-\C-x |
メタ制御文字 |
\uHHHH |
ユニコード文字 (HHHH の 16 進数 4 桁) |
\u{HHHHHH HHHHHH ....} |
ユニコード文字列 (HHHHHH は 16 進数 1 桁から 6 桁まで指定可能) |