这些操作在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)
我该如何解决这个问题?
答案 0 :(得分:2)
如果您打算捕获使用代码点表示的范围,则需要使用带有utf-8编码标头的\u
表示法:
#!/bin/env ruby
# encoding: utf-8
puts "Café".match(/[\u0080-\uFFFF]/)
demo program的输出为é
。