From: Robert Dober Date: 2008-11-29T00:38:50+09:00 Subject: Re: Help with regexp and gsub On Fri, Nov 28, 2008 at 4:13 PM, jackster the jackle wrote: > I need to be able to match all data before the word "Total:" and then I > will replace it with "" using gsub. > > Here is the text: > > C > THIS IS THE TEXT I WANT TO MATCH ON > and this..... > and this too... > and there could be this line too but the following line is always there. > Total: > But I need to keep > all text after > the text "Total:" > > > I was thinking that I would somehow use a regexp index but I'm not sure > how to do it. > > thanks > jackster > -- > Posted via http://www.ruby-forum.com/. > > I would read the lines into an array or split the string by /\r?\n/ then the following (might be slow for long texts) should do the trick text.split( /\r?\n/).inject(""){ ... or lines.inject(""){ |text, line| if ! trigger.empty? || /^Total/ === line then ## (1) text << line.chomp << "\n" else "" end } In case you do not want the line containing Total replace the if with the following if text.empty? /^Total/ === line ? "x" : "" else text << line.chomp << "\n" end }[2..-1] HTH Robert (1) You are absolutely right Charles I tried this with unless...else, laughably unreadable -- Ne baisse jamais la tête, tu ne verrais plus les étoiles. Robert Dober ;)