この正規表現では:
regex1 = /\z/
次の文字列が一致します。
"hello" =~ regex1 # => 5
"こんにちは" =~ regex1 # => 5
しかし、これらの正規表現では:
regex2 = /#$/?\z/
regex3 = /\n?\z/
彼らは違いを示しています:
"hello" =~ regex2 # => 5
"hello" =~ regex3 # => 5
"こんにちは" =~ regex2 # => nil
"こんにちは" =~ regex3 # => nil
何が干渉していますか?文字列エンコーディングは UTF-8 で、OS は Linux (つまり、$/
です"\n"
) です。マルチバイト文字が干渉してい$/
ませんか? どのように?