From: Gregory Seidman Date: 2006-11-26T02:52:25+09:00 Subject: Re: Ruby with regular expression On Sat, Nov 25, 2006 at 04:48:01AM +0900, peppermonkey wrote: } Hi, } I'm new to Ruby (and Regular expressions in general) and as such, } this is rather a newbie question but I'm trying to write a script in } Ruby to open a file and do some string manipulation. } Basically I'm getting hung up with regular expressions. } Suppose there is a file that contains, among other lines, lines of the } following structure. } } "This [1234567890] points to [0987654321]" } } Assume the line structure (words, spaces etc.) stay constant. } The actual numbers (within the brackets) are not constant. } There is always 10 numbers within the brackets. } There are other lines that have numbers enclosed by '[',']' that must } be left alone. } } How can you replace only those numbers in the above structure to } "xxxxxxxxxx"? } Openning a file, searching the file, writing to the file I'm presuming } is simple but the expression to identify and then replace those numbers } are giving me problems. Any help would be greatly appreciated. It sounds to me like you are trying to substitute strings by reference, similar to localization. Based on that, I am assuming that you have a hash somewhere that maps these ten-digit numbers to the strings that should replace them. In that case, what you want is something like this: str.gsub(/\[(\d+)\]/) { hash[$1.to_i] } } Thank you. --Greg