Ruby 1.8.7中str.gsub(/ ^ \ p {Word} / i,'')的等价物是什么?

时间:2015-03-14 15:09:29

标签: ruby

等同于

str.gsub(/[^\p{Word} ]/i, '') # works in 1.9.2+

在Ruby 1.8.7中?

我试过

str.gsub(/[^\w\s]/iu, '')

但输出包括更广泛的字符,即®。


一个例子:

Ruby 2.1.5

ruby -e "puts 'abcȣ的®Ȍ'.gsub(/[^\p{Word} ]/i, '')"
#or
#ruby -e "puts \"abc\u0223\u7684\u00ae\u020c\".gsub(/[^\p{Word} ]/i, '')"

输出:

abcȣ的Ȍ

Ruby 1.8.7-p374

ruby -e "puts 'abcȣ的®Ȍ'.gsub(/[^\w\s]/iu, '')"

输出:

abcȣ的®Ȍ

请注意,在我尝试使用Ruby 1.8.7时,®就在输出中。

1 个答案:

答案 0 :(得分:0)

您可以在regex docs on unicode properties中查找\p{Word}。您会看到它是以下属性的组合:

  • \p{L}信,
  • \p{M}马克,
  • \p{N}数字和
  • \p{Pc} Connector_Punctuation

您可以在unicode character database中查看这些内容,以确定要在您的正则表达式中包含哪些代码点。