Gregory Seidman
11/25/2006 5:52:00 PM
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