Actually, I oversimplified my example. I want to escape single quotes and question marks. irb(main):001:0> a = "Can't we?" => "Can't we?" irb(main):002:0> a.gsub(/([\'\?])/, '\\1') => "Can't we?" irb(main):003:0> a.gsub(/([\'\?])/, '\\\1') => "Can\\1t we\\1" irb(main):004:0> a.gsub(/([\'\?])/, '\\\\1') => "Can\\1t we\\1" irb(main):005:0> a.gsub(/([\'\?])/, '\\\\\1') => "Can\\'t we\\?" irb(main):006:0>