【Ruby】正規表現
今まで避けてきた正規表現。
避けられない事態になってやっておけばよかったと後悔...
基本
今回使った表現法を一覧に。
表現法 | 意味 |
---|---|
^ | 開始位置 |
$ | 終了位置 |
[abc] | a かb かc の1文字 |
[a-z] | a からz の1文字 |
[a-zA-Z] | a からz 、A から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つ(aaa かaaaa かaaaaa ) |
#{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])$/