Rob Biedenharn wrote: > On Apr 9, 2008, at 8:24 AM, Peter Bailey wrote: >>> end >>> >>> Rob Biedenharn http://agileconsultingllc.com >>> Rob / AgileConsultingLLC.com >> >> Thanks, Rob. This works beautifully, except that I need that last >> </emph> in my output. It's being stripped with your code. I don't see >> why, because it's just your $3, isn't it? >> -- >> Posted via http://www.ruby-forum.com/. > > You said to Todd: > The original text is just: > <row><entry><text><emph face="b">THE QUICK BROWN FOX JUMPED OVER THE > LAZY DOG.<\/emph>/ > > I assumed that the "<\/emph>/" part was a cut-n-paste of a regexp for > the email (which is one reason that I change from // to %r{} > construction of the Regexp so the / wouldn't have to be escaped. You > may have to change the second group to (.*?) [reluctant match rather > than greedy match] or adjust the third group to exactly match your > input. > > -Rob > > Rob Biedenharn http://agileconsultingllc.com > Rob / AgileConsultingLLC.com Rob, So, here's my original file: <row><entry><text><emph face="b">THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.</emph> Here's my code, from you: Dir.chdir("C:/users/pb4072/documents") do |d| file = File.read("test1.txt") output = file.gsub(%r{^(<row><entry><text><emph face="b">)(.*)(<\/emph>)}m) do |match| "#{$1}#{$2.gsub(%r{\b\w+\b}){|w|w.capitalize}}#{$3}" end File.open("test1.txt", "w") { |f| f.write output } end Here's what I get. It works great, but, I don't understand why the $3 text is simply blown away. <row><entry><text><emph face="b">The Quick Brown Fox Jumped Over The Lazy Dog. Thanks, Peter -- Posted via http://www.ruby-forum.com/.