From: hanmac@... Date: 2018-05-28T15:25:10+00:00 Subject: [ruby-core:87281] [Ruby trunk Bug#14791] String.sub wrong parsing of replacement with capturing group Issue #14791 has been updated by Hanmac (Hans Mackowiak). need 5 or 6 (6 when using ") ~~~ ruby "abc".sub(/(b)/, '\\\\\1') #=> "a\\bc" "abc".sub(/(b)/, "\\\\\1") #=> "a\\\x01c" "abc".sub(/(b)/, "\\\\\\1") #=> "a\\bc" ~~~ but be careful that irb returns inspected value, that is important if you want to see \ or \\ stuff ~~~ ruby puts "abc".sub(/(b)/, '\\\\\1') #=> a\bc p "abc".sub(/(b)/, '\\\\\1') #=> a\\bc ~~~ ---------------------------------------- Bug #14791: String.sub wrong parsing of replacement with capturing group https://bugs.ruby-lang.org/issues/14791#change-72269 * Author: churib (Timo Grodzinski) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ~~~ ruby irb(main):001:0> "abc".sub(/(b)/, '#\1#') # works => "a#b#c" irb(main):002:0> "abc".sub(/(b)/, '\\1') # doesn't works, should be "a\bc" => "abc" irb(main):003:0> "abc".sub(/(b)/, '\\\1') # doesn't works, should be "a\\bc" => "a\\1c" irb(main):004:0> "abc".sub(/(b)/, "\\1") # works => "abc" irb(main):005:0> "abc".sub(/(b)/, "\\\\1") # doesn't works, should be "a\bc" => "a\\1c" irb(main):006:0> "abc".sub(/(b)/, '\ \1') # works => "a\ bc" ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: