👻

[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
GitHubで編集を提案

Discussion