Gsub and single quote issue

a = " Ruby’s gem "

puts a.gsub(/[’]/, “”) #=> 1. Rubys gem

puts a.gsub(/[’]/, “’”) #=> 2. Ruby’s gem

puts a.gsub(/[’]/, “’”) #=> 3. Ruby’s gem

puts a.gsub(/[’]/, “\’”) #=> 4. Rubys gem s gem

puts a.gsub(/[’]/, “\’”) #=> 5. Rubys gem s gem

puts a.gsub(/[’]/, “\\’”) #=> 6. Ruby’s gem

puts " "

I couldn’t understand the result for #4 and #5. Any explanation is
appreciated.

On 24.03.2009 21:32, Raj S. wrote:

puts a.gsub(/[’]/, “\’”) #=> 5. Rubys gem s gem

puts a.gsub(/[’]/, “\\’”) #=> 6. Ruby’s gem

puts " "

I couldn’t understand the result for #4 and #5. Any explanation is
appreciated.

The sequence ’ in a replacement string is interpreted as the post
match. That’s why you see the duplication. You’ll see this nicely by
bracketing the replacement:

irb(main):012:0> a = " Ruby’s gem "
=> " Ruby’s gem "
irb(main):013:0> a.gsub /’/, “<\’>”
=> " Rubys gem "

There is also pre match:

irb(main):014:0> a.gsub /’/, “<\`>”
=> " Ruby< Ruby>s gem "

Kind regards

robert

Robert K. wrote:

The sequence ’ in a replacement string is interpreted as the post
match.

I assume that has something to do with ruby’s crazy global variables,
e.g $’. In that case, why isn’t the ‘$’ required.

On 25.03.2009 06:18, 7stud – wrote:

Robert K. wrote:

The sequence ’ in a replacement string is interpreted as the post
match.

I assume that has something to do with ruby’s crazy global variables,
e.g $’. In that case, why isn’t the ‘$’ required.

The replacement string is interpreted by sub and gsub and this is just
the convention that was chosen. Btw, it’s the same convention as in sed
and a number of other regular expression based replacement tools as
well.

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs