包含@的Ruby regexp中的语法错误

时间:2017-02-02 09:03:15

标签: ruby regex ruby-on-rails-4

我正在尝试在/:的字符串中替换*/**:*等特殊字符的出现。

str.gsub!(/([;.\\/?:@&=+$,{}|^\[\]`<>#%"'])/, '*\1*')

但是,我得到SyntaxError

`@&' is not allowed as an instance variable name
syntax error, unexpected end-of-input, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
str.gsub!(/([;.\\/?:@&=+$,{}|^\[\]`<>#%"'])/, '*...
                     ^ (SyntaxError)

我尝试将regexp定义为字符串并使用RegExp.quote(...)进行转换,但无济于事。任何建议都将受到高度赞赏!

1 个答案:

答案 0 :(得分:3)

你忘了逃避正则表达式中的/符号:

str.gsub!(/([;.\\\/?:@&=+$,{}|^\[\]`<>#%"'])/, '*\1*')
                 ^

否则,预期@之后的有效变量名称。