From: botp Date: 2010-11-21T18:57:45+09:00 Subject: Re: gsub and backslashes --0016e6d976fbb5bc4004958d2bee Content-Type: text/plain; charset=ISO-8859-1 On Sun, Nov 21, 2010 at 6:13 AM, Ralph Shnelvar wrote: > What I want is to change single backslashes to double backslashes. The result of the above substitution is "no change" > > On the other hand > "\\1\\2\\3".gsub(/\\/,"\\\\\\\\") > does do what I want ... but I am clueless as to why. there are many ways, #1 "\\1\\2\\3".gsub(/(\\)/,"\\1\\1").scan /./ #=> ["\\", "\\", "1", "\\", "\\", "2", "\\", "\\", "3"] #2 "\\1\\2\\3".gsub(/(\\)/,'\1\1').scan /./ #=> ["\\", "\\", "1", "\\", "\\", "2", "\\", "\\", "3"] #3 "\\1\\2\\3".gsub(/\\/){"\\\\"}.scan /./ #=> ["\\", "\\", "1", "\\", "\\", "2", "\\", "\\", "3"] #4 "\\1\\2\\3".gsub(/(\\)/){$1+$1}.scan /./ #=> ["\\", "\\", "1", "\\", "\\", "2", "\\", "\\", "3"] #1 & #2 samples uses group backreferences, ruby may need second parsing pass for this feature to work... #3 & #4 uses code blocks. may not need second pass. backreferences can be had using $n notation. best regards -botp --0016e6d976fbb5bc4004958d2bee--