Czy znak wielobajtowy zakłóca znak końca linii w wyrażeniu regularnym?

Z tym wyrażeniem regularnym:

regex1 = /\z/

następujące ciągi pasują:

"hello" =~ regex1 # => 5
"こんにちは" =~ regex1 # => 5

ale z tymi regexami:

regex2 = /#$/?\z/
regex3 = /\n?\z/

pokazują różnicę:

"hello" =~ regex2 # => 5
"hello" =~ regex3 # => 5
"こんにちは" =~ regex2 # => nil
"こんにちは" =~ regex3 # => nil

Co przeszkadza? Kodowanie ciągów to UTF-8, a system operacyjny to Linux (tj.$/ jest"\n"). Czy interferują znaki wielobajtowe$/? W jaki sposób?

questionAnswers(2)

yourAnswerToTheQuestion