使角色范围Regexp与Ruby 1.9一起使用

时间:2015-05-13 19:49:34

标签: ruby regex

这些操作在Ruby 1.8中有效,但我无法在Ruby 1.9中使用它们:

irb(main):002:0> "Café".match(/[\x80-\xff]/)
SyntaxError: (irb):2: invalid multibyte escape: /[\x80-\xff]/

irb(main):003:0> "Café".match(Regexp.new('[\x80-\xff]', nil, 'n'))
Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果您打算捕获使用代码点表示的范围,则需要使用带有utf-8编码标头的\u表示法:

#!/bin/env ruby
# encoding: utf-8

puts "Café".match(/[\u0080-\uFFFF]/)

demo program的输出为é