文字列があるとしましょう:
asd;;%$@#!G'{}[]
今、私は特別な記号をエスケープしたい:
;&|><*?`$(){}[]!#
したがって、出力は次のようになります。
asd\;\;%\$@\#\!G\'\{\}\[\]
gsub/sub
Rubyでこれを使用するにはどうすればよいですか?
これは、soundar のソリューションとほぼ同じ考え方です (ただし、文字クラスを使用し、キャプチャは行いません)。
"asd;;%$@#!G'{}[]".gsub(/[;&|><*?`$(){}\[\]!#]/, '\\\\\\0')
test_value = "asd;;%$@#!G'{}[]"
SPEC_REGEXP = /((;)|(\&)|(\|)|(>)|(<)|(\*)(\?)|(`)|(\$)|(\()|(\))|({)|(})|(\[)|(\])|(!)|(#))/
test_value.gsub!(SPEC_REGEXP,'\\\\\1')