2012-04-20 24 views
0

比方說,我有一個字符串: 如何搜索正則表達式並從ruby中的字符串中替換字符?

asd;;%[email protected]#!G'{}[] 

現在我想逃避特殊符號:

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

因此,輸出將是這樣的:

asd\;\;%\[email protected]\#\!G\'\{\}\[\] 

哪有我在Ruby中使用gsub/sub來實現此目的?

+0

這是一個字符串中找出特殊字符的正則表達式。 /[; \&\ |><\ * \?''\ $ \(\){} \ [\] \!\#]/ – 2012-04-20 09:11:02

+0

請參閱http://stackoverflow.com/a/5396495/1315563 – yazu 2012-04-20 09:16:49

回答

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

這裏幾乎是同樣的想法在soundar的解決方案(但使用字符類和無捕獲):

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