使用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/