=~メソッドでRuby正規表現のパターンマッチング
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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
スポンサーリンク
>> 次の記事 : 最短マッチ・貪欲じゃなくする
<< 前の記事 : 正規表現でのパターンマッチ
スポンサーリンク