=~メソッドでRuby正規表現のパターンマッチング

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

Rubyの正規表現では、Perlと同じ正規表現が使えます。
「=~」メソッドを用いて、以下のようにパターンマッチングを行います。

スポンサーリンク

正規表現 =~ 文字列

Perlの書き方と比べますと、Rubyは左辺と右辺が逆になるので、最初はなんかちょっと違和感を感じました。
でも、よく考えてみると・・・Rubyはオブジェクト指向ですから、まずオブジェクト(正規表現オブジェクト)がきて、そしてメソッド(=~)と引数(文字列)の順序になっている、と考えれば納得できました。
ただし、私が試してみたところ、Rubyでも、左辺と右辺を逆にして「文字列 =~ 正規表現」と、Perlと同じように書いても動くみたいです。

re = Regexp.new("world")
pattern = /world/
pattern2 = %r|world|
 
p re =~ "Hello world !"
p pattern =~ "Hello world !"
p pattern2 =~ "Hello world !"
 
ptn = /Ruby/
ptn2 = /Java/
ptn3 = /Lisp/
str = "PHP, Ruby, JavaScript, Python, Perl, Java"
 
if a = ptn =~ str
    puts "#{$&} : #{a}"
else
    puts "no match"
end
 
if a = ptn2 =~ str
    puts "#{$&} : #{a}"
else
    puts "no match"
end
 
if a = ptn3 =~ str
    puts "#{$&} : #{a}"
else
    puts "no match"
end

実行結果。

6
6
6
Ruby : 5
Java : 11
no match
スポンサーリンク
 
スポンサーリンク