どこでもDooor

参加した勉強会 / 読んだ技術書 / 見聞きした備忘録 を気ままに書いていきます

【Ruby】正規表現

今まで避けてきた正規表現

避けられない事態になってやっておけばよかったと後悔...

基本

今回使った表現法を一覧に。

表現法 意味
^ 開始位置
$ 終了位置
[abc] abcの1文字
[a-z] aからzの1文字
[a-zA-Z] aからzAからZの1文字
[0-9] 0から9の1文字
[2-7] 2から7の1文字
. 何でも1文字
\d 数字1文字
\D 数字以外の1文字
(...) ...を1つにまとめる
(a|b) aまたはb
a{3} aが3つ(aaa)
a{3,5} aが3~5つ(aaaaaaaaaaaa)
#{variable} variable変数の埋め込み

実際に使う時には、上記の一覧から組み合わせて/で挟んで使います。

実践

Stringという文字列が与えられた場合

str = 'String'
if str =~ /./
  puts "一致"
else
  puts "一致しない"
end

これがどうなるかというと、

結果 => "一致"

一致します。(知らずに苦労しました。)

完全に一致した時だけtrueを返したい時は、

str = 'String'
if str =~ /^.$/
  puts "一致"
else
  puts "一致しない"
end

今回の結果は、

結果 => "一致しない"

^$で挟めば、完全に一致という条件が付きます。

IPアドレス

やりたかったことは、IPアドレスかの判断。

こんな感じになるかと思います。

/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/