为什么会出现这个错误?
Regexp.new("[#$]")
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
# => Regexp.new("[#$]")
# ^
# (irb):1: unterminated string meets end of file
# from ~/.rvm/rubies/ruby-1.9.3-p194/bin/irb:1:in `<main>'
这应该从字面上描述由单个$
or组成的字符串子集。#
而且,AFAIU Ruby 的 Regexp 引擎,即使它们通常是元字符,也不需要在字符类#
中$
进行转义。
我会从错误消息中猜出 Ruby 试图在双引号内进行插值,但是......为什么$
?#
订购很重要。和字符有多个重载行为$
,#
所以我不知道是什么触发了这个。
PS,仅供参考:
/[#$]/
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
/[$#]/
# => /[$#]/
Regexp.new '[$#]'
# => /[$#]/
Regexp.new '[#$]'
# => /[#$]/
Regexp.new "[#$]"
# => SyntaxError: (irb):1: syntax error, unexpected $undefined