【发布时间】:2017-06-19 06:37:49
【问题描述】:
我正在尝试用*/*、*:* 分别替换字符串中出现的特殊字符,如/、: 等。
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.quote(...) 对其进行转换,但无济于事。任何建议将不胜感激!
【问题讨论】:
-
您只是忘记转义正则表达式中的
/符号:str.gsub!(/([;.\\\/?:@&=+$,{}|^\[\]`<>#%"'])/, '*\1*')。在您的情况下,RoR 期望在@之后有一个有效的变量名。
标签: ruby regex ruby-on-rails-4