https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2015-12-09T05:32:07Z
Ruby Issue Tracking System
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55385
2015-12-09T05:32:07Z
burnson (William Burnson)
william.burnson@gmail.com
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/55385/diff?detail_id=39619">diff</a>)</li></ul>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55386
2015-12-09T05:32:54Z
burnson (William Burnson)
william.burnson@gmail.com
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/55386/diff?detail_id=39620">diff</a>)</li></ul>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55387
2015-12-09T05:33:58Z
burnson (William Burnson)
william.burnson@gmail.com
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/55387/diff?detail_id=39621">diff</a>)</li></ul>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55388
2015-12-09T05:34:46Z
burnson (William Burnson)
william.burnson@gmail.com
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/55388/diff?detail_id=39622">diff</a>)</li></ul>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55391
2015-12-09T06:16:14Z
Hanmac (Hans Mackowiak)
hanmac@gmx.de
<ul></ul><p>its because how <code>gsub</code> works you need to escape the <code>\</code></p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">puts</span> <span class="s1">'ab'</span><span class="p">.</span><span class="nf">gsub</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'\\\+'</span><span class="p">)</span> <span class="c1">#=> \+b</span>
</code></pre>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55392
2015-12-09T06:18:37Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55393
2015-12-09T06:23:32Z
phluid61 (Matthew Kerwin)
matthew@kerwin.net.au
<ul></ul><p>Substitution parameters work in string-string mode:</p>
<pre><code>irb> puts 'ab'.gsub('a', %q(\`))
b
irb> puts 'ab'.gsub('a', %q(\&))
ab
irb> puts 'ab'.gsub('a', %q(\'))
bb
irb> puts 'ab'.gsub('a', %q(\0))
ab
irb> puts 'ab'.gsub('a', %q(\\0))
ab
irb> puts 'ab'.gsub('a', %q(\\\0))
\0b
irb> puts 'ab'.gsub('a', %q(\\\+))
\+b
</code></pre>
<p>I used <code>%q()</code> to make it clear just how many blackslashes are involved.</p>
<p>Note with the <code>\0</code> examples, either a single <em>or</em> double-backslash invokes the special value replacement.</p>
<p>The plus symbol (<code>$+</code> or <code>\+</code>) is an alias for the <code>$LAST_PAREN_MATCH</code> special value, which in this case is blank.</p>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55395
2015-12-09T06:26:49Z
phluid61 (Matthew Kerwin)
matthew@kerwin.net.au
<ul></ul><p>I should have used this example:</p>
<pre><code>puts 'ab'.gsub('a', "\x5C\x5C\x2B")
\+b
</code></pre>
Ruby master - Bug #11793: puts 'ab'.gsub('a', '\\+') - unexpected output
https://bugs.ruby-lang.org/issues/11793?journal_id=55396
2015-12-09T06:31:43Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/55396/diff?detail_id=39625">diff</a>)</li></ul><p>The document states "It may contain back-references", <code>\+</code> is one of them.</p>
<p>Note: preformated text requires a preceding blank line.</p>