Ruby 正则表达式错误

标签 ruby 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 修订版 54768)[x86_64-linux]

最佳答案

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

/\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 正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785594/

相关文章:

python 正则表达式。提取模式之间的文本

php - 剥离一切,除了 PHP 中的字母数字和欧洲字符

ruby - Ruby 中 each.with_index 和 each_with_index 的区别?

Python 和 Ruby 解释器

在 GoLang 中用于后缀检测的正则表达式

正则表达式仅匹配 C# 接口(interface)文件名

javascript - 如何增强 slugify 以处理 Camel Case?

ruby - 使用 Ruby 将 SQL 结果转换为带有 ID 键的散列

ruby - 将数字转换为 ruby​​ 中的单词 - 改进我的递归解决方案

ruby-on-rails - 将更新推送到 Rails 中的页面