How to escape a forward slash with gsub, also does interpolation work with gsub?

I am trying this:

I want to replace all the text in between java comments:

/* start */

replace this text here

/* end */

I’m trying:

text.gsub(//* start /(.)/* end *//im, replace_with)

But i’m getting errors relating to expecting keyword_end.

How should I be escaping /* and */ ?

Also, does string interpolation work in gsub regex? Say I had variables like:

start_tag = “/* start */”

end_tag = “/* end */”

I want to do:

text.gsub("#{start_tag}(.*)#{end_tag}", replace_with)

You have to escape the slashes and asterisk in the regex, as they are regular expression characters. http://rubular.com is a great place to learn and play around with regular expressions.

text.gsub(//* start */(.*)/* end *//im, replace_with)

Yes, interpolation works in regular expressions:

text.gsub(/#{start_tag}(.*)#{end_tag}/, replace_with)

thanks!

BTW, is it possible that during the replace, it leaves the start/end tag?

Currently it is replacing it also, I want the comments to be there after the replacement.

Quoting S Ahmed <sahmed1020@gmail.com>:

I am trying this:

I want to replace all the text in between java comments:

/* start */
replace this text here
/* end */

I'm trying:

text.gsub(//* start */(.*)/* end *//im, replace_with)

But i'm getting errors relating to expecting keyword_end.

How should I be escaping /* and */ ?

Yes,
text.gsub(/\/\* start \*\/(.*)\/\* end \*\//im, replace_with)

Slightly simpler
text.gsub(%r{/\* start \*/(.*)/\* end \*/}im, replace_with)

Also, does string interpolation work in gsub regex? Say I had variables
like:

start_tag = "/* start */"
end_tag = "/* end */"

I want to do:

text.gsub("#{start_tag}(.*)#{end_tag}", replace_with)

gsub takes regex, not strings

text.gsub(/#{start_tag}(.*)#{end_tag}/, replace_with)

Special characters do need to be escaped in start_tag and end_tag, but in this
case only the asterisks, not the slashes.

HTH,
  Jeffrey