Rob Biedenharn wrote: > On Apr 8, 2008, at 2:53 PM, Peter Bailey wrote: >> file = File.read("test1.txt") >> And, I'm getting this: >> Peter > 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 > > Note the use of three capture groups to get the unchanged initial and > final parts as well as the middle part that is altered. The %r{\b\w+ > \b} is a Regexp that matches words, \b is a word-boundary and \w is a > word-character (short for [a-zA-Z0-9_]). Your use of > String#capitalize! returns nil if no change is made. > > -Rob > > 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/.