使用regex运行ruby脚本时,

s = object.value.gsub(/(\A[\s\xA0]*|[\s\xA0]*\Z)/n, '')

得到错误
invalid multibyte escape: /(\A[\s\xA0]*|[\s\xA0]*\Z)/ (SyntaxError)

知道为什么吗Ruby版本2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

最佳答案

\xHH语法仅对utf-8字符\x00\x7F有效。\x80\xFF在US-ASCII编码中有效,但在UTF-8中无效;要使用更高的字符,请使用UTF-8因此,所有这些都起作用:

/\u00A0/

/#{"\\xA0".encode('US-ASCII')}/

Regexp.new("\\xA0".encode('US-ASCII'))

# encoding: US-ASCII
/\xA0/

尽管它们会做不同的事情,这取决于您匹配的编码例如:
# encoding: UTF-8
Regexp.new("\\xA0".encode('US-ASCII')) =~ "\u00A0"
# => Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)

关于ruby - Ruby正则表达式错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47785594/

10-13 01:26