假设我有一个字符串:
asd;;%$@#!G'{}[]
现在我想转义特殊符号:
;&|><*?`$(){}[]!#
因此,输出将类似于:
asd\;\;%\$@\#\!G\'\{\}\[\]
如何gsub/sub
在 Ruby 中实现这一点?
test_value = "asd;;%$@#!G'{}[]"
SPEC_REGEXP = /((;)|(\&)|(\|)|(>)|(<)|(\*)(\?)|(`)|(\$)|(\()|(\))|({)|(})|(\[)|(\])|(!)|(#))/
test_value.gsub!(SPEC_REGEXP,'\\\\\1')
这与 soundar 的解决方案中的想法几乎相同(但使用字符类且不捕获):
"asd;;%$@#!G'{}[]".gsub(/[;&|><*?`$(){}\[\]!#]/, '\\\\\\0')