👻
[Bug #21291] 正規表現で /m と $ を組み合わせたときに意図しない挙動になるバグ報告
[Bug #21291] possible bug with /m regexp and $ based on input
- 正規表現で
/m
と$
を組み合わせたときに意図しない挙動になるというバグ報告 -
/m
は.
が改行にマッチするようになる正規表現のオプション
# こっちは改行を含まない
pp "homu\nmami" =~ /h.*i/ # => nil
# こっちは 行を含む
pp "homu\nmami" =~ /h.*i/m # => 0
- これが以下のように
$
と組み合わせた場合に意図市内に挙動になる
# これらは問題ない
p "a\n" =~ /$./m # => 1
p "a\n" =~ /$.*/m # => 1
p "aa\n" =~ /$./m # => 2
# 本来であれば nil 以外が返るはずが nil が返ってくる
p "aa\n" =~ /$.*/m # => nil
# . 以外の場合は問題ない
p "aa\n" =~ /$[\S\s]*/m # => 2
- これは Ruby 1.8 だと
2
になるが Ruby 1.9 以降ではnil
になってしまうみたいですね - 修正PR は出されていますがまだ取り込まれてはいないみたい
Discussion