Regexp grouping question

Hi

I’m trying to remove unecessary white space around equals signs and
after semicolons

compressed = “foo = bar; red = herring;”
compressed = compressed.gsub(/\s*([=;])\s*/,"#$1")
puts compressed

produces
foobarredherring

but I would like it to produce
foo=bar;red=herring;

Seems like the #$1 is not working. I also tried #{$1} but that didn’t
work either.

Any ideas?

Thanks,
Peter

compressed = “foo = bar; red = herring;”
compressed = compressed.gsub(/\s*([=;])\s*/,’\1’)

I believe #$1 is evalued before gsub is executed and hence fails.
gsub sets the variable and uses \1, \2, \3 in the replacement string
to correspond.

Chris A. wrote:

compressed = “foo = bar; red = herring;”
compressed = compressed.gsub(/\s*([=;])\s*/,’\1’)

I believe #$1 is evalued before gsub is executed and hence fails.
gsub sets the variable and uses \1, \2, \3 in the replacement string
to correspond.

Thank you!

Peter

On Apr 1, 2006, at 4:28 PM, [email protected] wrote:

Peter

If you want to use $1, $2, $3, etc. with gsub, you can use the block
form:

compressed.gsub(regexp) { |matched_string| $1 }

unknown wrote:

Hi

I’m trying to remove unecessary white space around equals signs and
after semicolons

compressed = “foo = bar; red = herring;”
compressed = compressed.gsub(/\s*([=;])\s*/,"#$1")
puts compressed

produces
foobarredherring

but I would like it to produce
foo=bar;red=herring;

Seems like the #$1 is not working. I also tried #{$1} but that didn’t
work either.

Any ideas?

Thanks,
Peter

This thread has been very helpful. Thank you!

What if the input syntax allows spaces in the field values?

Possible input:
foo = high bar jump ; red = pickled herring ;

And, let’s remove leading and trailing white space.

Desired results:
foo=high bar jump;red=pickled herring;