我正在尝试在/
,:
的字符串中替换*/*
,*:*
等特殊字符的出现。
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(...)
进行转换,但无济于事。任何建议都将受到高度赞赏!
答案 0 :(得分:3)
你忘了逃避正则表达式中的/
符号:
str.gsub!(/([;.\\\/?:@&=+$,{}|^\[\]`<>#%"'])/, '*\1*')
^
否则,预期@
之后的有效变量名称。