From: Mike Stok Date: 2006-02-06T07:24:29+09:00 Subject: Re: regex trick On 5-Feb-06, at 5:08 PM, Alain FELER wrote: > I want to replace all ' by \' ? (I need it to do inserts in mysql). > > s = "j'ai" > > s.gsub!(/'/,'\'') > > p s ==> gives j'ai and not j\'ai as I want > Thanks for help. What interface to MySQL are you using? I know that the Ruby DBI module allows you to use place-holders in queries, and the DBI layer does the escaping for you e.g. dbh.do("INSERT INTO people (id, name, height) VALUES(?, ?, ?)", nil, "Na'il", 76) The resulting statement produced by do and sent to the server looks like this: INSERT INTO people (id,name,height) VALUES(NULL,'Na\'il',76) (stolen from http://www.kitebird.com/articles/ruby-dbi.html) or if you are using the ruby mysql interface then (from http:// www.kitebird.com/articles/ruby-mysql.html) Using escape_string, the platypus record might be inserted as follows: name = dbh.escape_string("platypus") category = dbh.escape_string("don't know") dbh.query("INSERT INTO animal (name, category) VALUES ('" + name + "','" + category + "')") Hope this helps, Mike -- Mike Stok http://www.stok.co.uk/~mike/ The "`Stok' disclaimers" apply.