this was discussed several times, try searching for gsub and \\ or escaping or something similar. \& is the last match, and \\ is the whole match. so you need to escape both. The correct solutions to this 'quiz' are posted somewhere, just google it ;-) On 10/9/06, Esteban Manchado VeláÛquez <zoso / foton.es> wrote: > On Mon, Oct 09, 2006 at 08:58:09PM +0900, Jani Patokallio wrote: > > Greetings, > > > > I'm trying to do something that should be very simple: stick a "\" in > > front of > > every instance of "&" in a string. However, the obvious code... > > > > "this&that".gsub!("&", "*") > > --> "this*that" # OK! > > > > "this&that".gsub!("&", "\\&") > > --> "this&that" # Wrong > > > > ...doesn't work, because "\&" means "last match" in gsub substitution > > strings. > > How can I escape this? I experimentally determined that entering > > "\\\\\\&" > > (that's six backslashes) gets the desired result, but I don't really > > understand why. Is there a less obscure way of doing this? > > I'm not sure, but I think that the problem is that you are using double > quotes. So, the value you are passing is really the same as: > > '\\\&' > > Which, once you interpret the escape sequences, you have a literal '\' and a > literal '&'... > > -- > Esteban Manchado VeláÛquez <zoso / foton.es> - http://www.foton.es > EuropeSwPatentFree - http://EuropeSwPatentFree.hispalinux.es > >