如何搜索正则表达式并替换ruby中字符串中的字符?

时间:2012-04-20 09:09:37

标签: ruby regex string gsub

假设我有一个字符串:

asd;;%$@#!G'{}[]

现在我想要转义特殊符号:

;&|><*?`$(){}[]!#

因此,输出将类似于:

asd\;\;%\$@\#\!G\'\{\}\[\]

如何使用Ruby中的gsub/sub实现此目的?

2 个答案:

答案 0 :(得分:1)

test_value = "asd;;%$@#!G'{}[]"
SPEC_REGEXP = /((;)|(\&)|(\|)|(>)|(<)|(\*)(\?)|(`)|(\$)|(\()|(\))|({)|(})|(\[)|(\])|(!)|(#))/
test_value.gsub!(SPEC_REGEXP,'\\\\\1')

答案 1 :(得分:1)

这与soundar的解决方案几乎相同(但使用字符类并且没有捕获):

"asd;;%$@#!G'{}[]".gsub(/[;&|><*?`$(){}\[\]!#]/, '\\\\\\0')