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