Greg
6/28/2007 5:23:00 AM
On Jun 27, 9:44 pm, Don Levan <levan...@gmail.com> wrote:
> Hi All,
>
> I am struggling here and would be most appreciative of any help.
>
> I have a regular expression problem I can't seem to figure my way out
> of. I had sent a similar request this morning, and gratefully
> received two emails from David Black and Axel Etzold. Unfortunately,
> I am still having difficulty.
>
> I am trying to extract the font name attribute out of the following
> xml (this is an excerpt of a larger file). The weird thing, is that
> my regular expression correctly matches the text if I use TextMate's
> regular expression 'find in project feature' and with the freeware
> Reggy regular expression test tool found on Google code. It also
> matches correctly, if I text against a subset of the xml being
> parsed. I.E., see this first example.
>
> #!/usr/bin/env ruby
> #
> # Created by Don Levan on 2007-06-26.
> # Copyright (c) 2007. All rights reserved.
>
> string = %q(</TextObj>
> </Object>
> <ObjectStyle id="0" fontHeight="11" graphicFormat="3843"
> fieldBorders="132">
> <CharacterStyle mask="16183">
> <Font-family codeSet="Roman" fontId="0">Helvetica</Font-family>
> <Font-size>9</Font-size>
> <Face>256</Face>
> <Color>#000000</Color>
> </CharacterStyle>")
>
> regexp = Regexp.new(/^\s*<Font-family codeSet=\"\w*\" fontId=\"\d*\">
> (\w*)<\/Font-family>\s*$/)
>
> if string =~ regexp
> puts "#{$1}"
>
> end
>
> Result: Helvetica
>
> However, if I run this script, there is no result.
>
> #!/usr/bin/env ruby
> #
> # Created by Don Levan on 2007-06-26.
> # Copyright (c) 2007. All rights reserved.
>
> regexp = Regexp.new(/^\s*<Font-family codeSet=\"\w*\" fontId=\"\d*\">
> (\w*)<\/Font-family>\s*$/)
> file = File.new('/Users/donlevan/Desktop/DDRs/Apple Dealer Price
> List.xml')
>
> file.each do |line|
> if line =~ regexp
> puts "#{$1}"
>
> end
> end
>
> I have looked at Hiproct and XML simple, unfortunately I can not get
> TextMate configured correctly so I keep getting Loaderrors when I try
> to use ruby gems.
>
> Thanks,
>
> Don
You use an xml library, possibly rexml
don't forget require 'rubygems'