Взаимодействует ли многобайтовый символ с символом конца строки в регулярном выражении?
С этим регулярным выражением:
regex1 = /\z/
следующие строки соответствуют:
"hello" =~ regex1 # => 5
"こんにちは" =~ regex1 # => 5
но с этими регулярными выражениями:
regex2 = /#$/?\z/
regex3 = /\n?\z/
они показывают разницу:
"hello" =~ regex2 # => 5
"hello" =~ regex3 # => 5
"こんにちは" =~ regex2 # => nil
"こんにちは" =~ regex3 # => nil
Что мешает? Строковое кодирование - UTF-8, а ОС - Linux (т.е.$/
является"\n"
). Многобайтовые символы мешают$/
? Как?