=~ による正規表現パターンマッチ
正規表現は、正規表現クラスつまりRegexpクラスから作るか、「/regexp/」のようにスラッシュで囲むかで作れるけれど、まあ後者が簡単。
test_regexp = Regexp.new('^test', true) #=> /^test/i test_regexp = /^test/i #=> /^test/i
マニュアルには左辺に正規表現、右辺に文字列をおいて評価するように書かれているけれど、Perlから入った僕はすごく違和感がある。
なぜならPerlは逆なのだ。
Ruby
str = 'test is important.' test_regexp =~ str #=> 0(マッチした位置)
マッチしなければnil。
Perl
$test_regexp = qr/^test/i; $str = 'test is important.'; $str =~ $test_regexp; #=> 1(成功した回数)
と、いろいろ調べてたら逆でも問題ないらしい。
str =~ test_regexp #=> 0
おお。
Perlerな自分は断然こちらが好きだが、流儀的にはどうなのだろう。
まだよくわからない。
要するにこれはあれか、シンタックスシュガーというやつなんでしょうね。