2008/4/8, Gregg Yows <gregg / yows.net>:
> Code:
>
>  "<td align="left" ><div style="width: 165px; height: 175px;"><a
>  href="http://www.amazon.com/Rails-Recipes/dp/0977616606/ref=pd_sim_b_njs_img_1">testPit
>  something here Best</td>"
>
>
>  Pattern:
>
>  <td.*?>.*?<\/td\s*>
>
>
>  I'm trying to match this whole block and use it for further parsing.
>  This started from an example in Brian Merick's book "Everyday
>  Scripting..." that had to be modified because amazon has changed their
>  presentation to tables instead of lists.
>
>  Anyway, the regex works fine as a single-line. as soon as I introduce
>  this:
>
>  "<td align="left" ><div style="width: 165px; height: 175px;"><a
>  href="http://www.amazon.com/Rails-Recipes/dp/0977616606/ref=pd_sim_b_njs_img_1">testPit
>  something here
>
>  Best</td>"
>
>  it fails.
>
>  When I try this same expression with perl using the //s mode, it works.
>  I understand Ruby uses //m (multi-line mode in nearly the same fashion
>  causing newlines to be considered any character, so it should work,
>  right? Can anyone tell me what I am doing wrong here? Why isn't
>  "multiline" mode working?

Works for me: no match without /m, match with /m:

irb(main):004:0> s=%q{<td align="left" ><div style="width: 165px;
height: 175px;"><a
irb(main):005:0'
href="http://www.amazon.com/Rails-Recipes/dp/0977616606/ref=pd_sim_b_njs_img_1">testPit
irb(main):006:0' something here Best</td>}
=> "<td align=\"left\" ><div style=\"width: 165px; height:
175px;\"><a\nhref=\"http://www.amazon.com/Rails-Recipes/dp/09
77616606/ref=pd_sim_b_njs_img_1\">testPit\nsomething here Best</td>"
irb(main):007:0> s[%r{<td.*?</td\s*>}]
=> nil
irb(main):008:0> s[%r{<td.*?</td\s*>}m]
=> "<td align=\"left\" ><div style=\"width: 165px; height:
175px;\"><a\nhref=\"http://www.amazon.com/Rails-Recipes/dp/09
77616606/ref=pd_sim_b_njs_img_1\">testPit\nsomething here Best</td>"
irb(main):009:0>

Cheers

robert

-- 
use.inject do |as, often| as.you_can - without end