From: Robert Klemme Date: 2008-03-17T22:09:52+09:00 Subject: Re: Replacing based on regular ecpressions On 17.03.2008 13:45, T K wrote: > I'm writing a ruby script that does a batch search-and-replace command. > > In each line of the file that is opened, I would like to delete part > of the entire part matched by a regrex. For example, > > > line.gsub(/(Tennis\/Soccer\/.+?).+?){ That's not a valid regular expression as far as I can see. So the whole piece of code is not valid Ruby code. > puts $& # entire match > puts $1 # the first match puts is not going to work for replacements. > } > > I can successfuly identify the parts I need in the regres, now I want > to only keep the first match. Something like "$&" - "$1". Err, what? Can you please be a bit more specific? What is it that you want to match and what is your expected output? Did you maybe mean line.gsub! %r{Tennis/Soccer/(.+?)}, '\\1' Note though that .+? will match a single character most of the time if you do not place another expression with a more specific pattern afterwards. > I tried different methods such as String#delete, but they didn't work for me. String#gsub and #gsub! are fine. You just need to use them properly. Kind regards robert