以下Ruby脚本会导致语法错误:
test = 'Hello world#'
test.sub!(/#$/, '!')
p test
我希望输出为"Hello world!"
。根据我的理解,正则表达式应匹配行尾的任何哈希字符。然后sub!
应该用感叹号替换它。
相反,我收到以下错误消息:
tmp.rb:2: unterminated regexp meets end of file
tmp.rb:2: syntax error, unexpected end-of-input, expecting ')'
p test
^
似乎在第二次斜线后正则表达式仍在继续。如果我将正则表达式更改为/#/
(没有尾随$
),它会按预期工作。
答案 0 :(得分:3)
在Ruby中#
用于插值并向正则表达式添加注释。
将#
转义为\#
:
test = 'Hello world#'
test.sub!(/\#$/, '!')
#=> "Hello world!"