読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

正規表現の評価は「 =~ 」でもOK

正規表現を使うとき、「"ax" =~ /([a-z])x/」のように文字列を左辺、正規表現を右辺にしていたのだけど、逆にしても同じなんだな。あと、正規表現が左辺の場合、「===」でもマッチングがチェックできる。

# 文字列を左辺。
puts "ax" =~ /([a-z])x/
puts $1

# 正規表現を左辺。これは↑と同じ
puts /([a-z])x/ =~ "bx"
puts $1

# 正規表現を左辺にする場合「===」でもマッチするかどうかの評価が可能。
# ただし戻り値はtrue or false
puts /([a-z])x/ === "cx"
puts $1 # $1はちゃんと更新される。


# 文字列を左辺にしての「===」は意味が違うので注意な。
puts "dx" === /([abc])x/
puts $1

実行結果です。

0
a
0
b
true
c
false
c

Javaの「"hoge".equals( str )」的な効果があるかと一瞬思ったけど、そんなことはなかった

def test( str )
  str =~ /[a-z]x/ ? "a" : "b"
end

def test2( str )
  /[a-z]x/ =~ str ? "a" : "b"
end

puts test( nil )
puts test2( nil )

実行結果です。

b
b

NillClassでちゃんと「=~」が定義されているっぽいなー。ふむ。