From: Yukihiro Matsumoto Date: 2009-05-07T23:20:01+09:00 Subject: [ruby-core:23390] Re: [Bug #1443] String#gsub handles backslashes incorrectly Hi, In message "Re: [ruby-core:23389] [Bug #1443] String#gsub handles backslashes incorrectly" on Thu, 7 May 2009 22:00:03 +0900, shawn landen writes: |This is a continuation of bug #1441 | |The backslashes are being doubled under single quotes and double quotes, but String#gsub requires you to quadruple (4x) them, 4 backslashes for every one in the resultant string. | |printf "b".gsub("b","\\\\") Backslashes have special escape meaning in strings, so you need to double slashes. In addition, backslashes have special meaning in gsub/sub replacement strings, so you need to double again. That is the reason you need 4 backslashes for each single backslash in a replacement. It's weird but it's spec for long time. I don't think we can change this behavior. You can use block instead, e.g. printf "b".gsub(/b/){'\\'} matz.