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?