[ruby-core:99643] [Ruby master Bug#17126] String#gsub fails to escape single quote
From:
andy.am@...
Date:
2020-08-19 15:24:32 UTC
List:
ruby-core #99643
Issue #17126 has been reported by AndyMaleh (Andy Maleh).
----------------------------------------
Bug #17126: String#gsub fails to escape single quote
https://bugs.ruby-lang.org/issues/17126
* Author: AndyMaleh (Andy Maleh)
* Status: Open
* Priority: Normal
* ruby -v: 2.7.1
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Hi, I don't know if I'm misunderstanding how `String#gsub` works, but I encountered an issue in the Ruby "git" gem with escaping single quotes, which I fixed and [contributed back](https://github.com/ruby-git/ruby-git/pull/480).
I thought I'd report here too since it was caused by Ruby `String#gsub` malfunctioning in case there is a bug in Ruby.
**Description:**
`String#gsub(str, replacement)` is duplicating a substring outside the
**Code to Demonstrate Problem:**
```ruby
"Hello ' World".gsub('\'', '\'\\\'\'')
```
or
```ruby
"Hello ' World".gsub("'", "'\\''")
```
or
```ruby
"Hello ' World".gsub(/'/, "'\\''")
```
**Output:**
```
=> "Hello ' World' World"
```
**Expected Output:**
```
=> "Hello '\'' World"
```
In fact, I tested this same regex replacement in Java and got the expected output above.
I look forward to hearing back about this puzzling problem.
Perhaps it is not a bug and I am just misunderstanding how `String#gsub` works in Ruby as I noticed it behaves the same exact way in JRuby too.
Best regards,
Andy Maleh
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>