On Apr 9, 2008, at 8:24 AM, Peter Bailey wrote:
> 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/.

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