【发布时间】:2013-03-24 16:14:49
【问题描述】:
使用这个正则表达式:
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")。多字节字符是否干扰$/?怎么样?
【问题讨论】:
-
仅供参考:
/[[:space:]]?\z/有效。 -
有趣的是,
"こんにちは" =~ /\n?$/说5。在 2.0 和 1.9 的两种情况下,我也看到了相同的行为。 -
不是 UTF-8 相关方面的专家,但这对我来说似乎是一个错误。
-
似乎不只是换行符:
"こんにちは" =~ /a?\z/=>nil。 -
在Ruby trunk 中,该问题现已被接受为错误。希望它会得到修复。
标签: ruby regex encoding multibyte ruby-2.0