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: 153
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