From: Robert Klemme Date: 2008-09-08T23:43:36+09:00 Subject: Re: regular expression match and exclude 2008/9/8 Patrick He : > Maybe you can write the regex pattern like this: > > irb(main):022:0> imgs.each do |s| > irb(main):023:1* p [s, /^galleries\/((?!thumb).)+\.jpg$/ =~ s] > irb(main):024:1> end > ["galleries/blah.jpg", 0] > ["galleries/blahthumb.jpg", nil] > ["galleries/landscape.jpg", 0] > ["galleries/landscapethumb.jpg", nil] > ["galleries/foo.jpg", 0] > ["galleries/foothumb.jpg", nil] > => ["galleries/blah.jpg", "galleries/blahthumb.jpg", > "galleries/landscape.jpg", "galleries/landscapethumb.jpg", > "galleries/foo.jpg", "galleries/foothumb.jpg"] Good idea! But irb(main):001:0> /^galleries\/((?!thumb).)+\.jpg$/ =~ "galleries/athumbb.jpg" => nil And this should not be the case. I believe this one is better irb(main):002:0> /^galleries\/((?!thumb\.jpg).)+\.jpg$/ =~ "galleries/athumbb.jpg" => 0 Also, you do not need the capturing group, so irb(main):003:0> /^galleries\/(?:(?!thumb\.jpg).)+\.jpg$/ =~ "galleries/athumbb.jpg" => 0 Or even irb(main):004:0> /^galleries\/(?:(?!thumb\.).)+\.jpg$/ =~ "galleries/athumbb.jpg" => 0 Kind regards robert -- use.inject do |as, often| as.you_can - without end