From: "しん" Date: 2006-06-23T12:03:15+09:00 Subject: [ruby-list:42459] Re: 多量の正規表現との効率的なマッチのアイデアを、、 出沢です > > そこで、たとえばこういう情報を追加して > > mycat=[ "m0" , "m0" ,"m1"   ,"m2" ] > > myreg=[ /windowsupdate/, /trendmicro/,/w3b\.mydomain/,/mydomain/ ] > > > > こういう結果にする。 > > 52 3count > > 52に分類されているドメインのうちmyregのどれかに一致するのはこの2つでは? > 52 download.windowsupdate.com > 52 officescan-p.activeupdate.trendmicro.com:80 はい、一致するのはその二つです なので、これは m0 というカテゴリになおし、一致しなかった3つを 52のままにします。 > Rubyらしさを求めるならば、ぜひブロックを使いましょう。 > each、map、find_allあたりから慣れてみましょう。 > 各々の要素について処理を行ない新たな配列を返すmapはとても便利です!! はい、そうしたいのですがまだなかなか使いかたが把握できなくて。 ということで今回やってみたいなと思ったしだい > input.split(/\n/).map{|line| cat,data = line.split; [cat, Regexp.new(Regexp.quote(data))]} > # => [["m0", /windowsupdate/], ["m0", /trendmicro/], ["m1", /w3b\.mydomain/], ["m2", /mydomain/]] 成る程。 ブロック内の最後の式に置き換わるわけですね。 String が 配列に化けるのかぁ。。 > こういう質問をする場合は悩む前にとりあえず動くプログラムを書いてください。 > どういう形であれ動くプログラムがあれば意図は伝わります。 やってみます。