Substitute all matches with values in Ruby regular expression

Posted by Lewisham on Stack Overflow See other posts from Stack Overflow or by Lewisham
Published on 2010-03-27T22:28:50Z Indexed on 2010/03/27 22:33 UTC
Read the original article Hit count: 134

Filed under:
|

Hi all,

I'm having a problem with getting a Ruby string substitution going. I'm writing a preprocessor for a limited language that I'm using, that doesn't natively support arrays, so I'm hacking in my own.

I have a line:

x[0] = x[1] & x[1] = x[2]

I want to replace each instance with a reformatted version:

x__0 = x__1 & x__1 = x__2

The line may include square brackets elsewhere.

I've got a regex that will match the array use:

array_usage = /(\w+)\[(\d+)\]/

but I can't figure out the Ruby construct to replace each instance one by one. I can't use .gsub() because that will match every instance on the line, and replace every array declaration with whatever the first one was. .scan() complains that the string is being modified if you try and use scan with a .sub()! inside a block.

Any ideas would be appreciated!

© Stack Overflow or respective owner

Related posts about ruby

Related posts about regex