@raw_array[i]=~/[\W]/
非常简单的正则表达式。但是当我尝试使用一些非拉丁字母(具体来说是俄语)时,条件为 false。
我该怎么做呢?
来自Regexp文档:
/\W/
- 一个非单词字符 ([^a-zA-Z0-9_]
)
它并不特别支持Unicode。或许像这样的表达式会更适合你:
@raw_array[i]=~/[^[:word:]]/
\W
字符类认为一些非拉丁字母是非单词字符。我解释了该字符类不具备Unicode感知能力;它对构成“单词”字符的定义非常狭窄,如上所述。然后,我向您展示了一个具有Unicode感知能力的字符类,其工作方式与您希望的\W
类似。 - Darshan Rivka Whittle?> 'ываыва'=~/[[:word:]]/ => nil
- Joe Half Face0
。 - Darshan Rivka Whittle>> RUBY_VERSION =>“1.9.3”
。但是我可以在Rubular中检查,Ruby的行为就像低于1.9一样。我无法弄清楚发生了什么... - Joe Half Face
^\pL
替代\W
。 - Explosion Pills