多字节字符是否会干扰正则表达式中的结束字符?

saw*_*awa 16 ruby regex encoding multibyte ruby-2.0

有了这个正则表达式:

regex1 = /\z/
Run Code Online (Sandbox Code Playgroud)

以下字符串匹配:

"hello" =~ regex1 # => 5
"?????" =~ regex1 # => 5
Run Code Online (Sandbox Code Playgroud)

但是这些正则表达式:

regex2 = /#$/?\z/
regex3 = /\n?\z/
Run Code Online (Sandbox Code Playgroud)

他们表现出差异:

"hello" =~ regex2 # => 5
"hello" =~ regex3 # => 5
"?????" =~ regex2 # => nil
"?????" =~ regex3 # => nil
Run Code Online (Sandbox Code Playgroud)

什么是干扰?字符串编码是UTF-8,操作系统是Linux(即,$/"\n").多字节字符是否会干扰$/?怎么样?

saw*_*awa 1

Ruby trunk中,该问题现已被视为错误。希望它能得到修复。

更新:两个补丁已发布在 Ruby 主干中。