From: gotoken@... (GOTO Kentaro) Date: 1998-06-23T10:05:16+09:00 Subject: [ruby-dev:2974] Re: Regexp の実行が遅い気がします ごとけんです もう dev っぽくない話題になっちゃいましたが、 In message "[ruby-dev:2961] Regexp の実行が遅い気がします" on 98/06/22, Kazunori NISHI writes: >Web のアクセスログを調査しようとしたんですが、どうも Regexp の実行が >遅い気がします。下は、単にチェックしてるだけなんですが、 >---------------------------------------------------------------------- >ins22.yokohama-ins.dti.ne.jp - - [30/May/1998:03:17:35 +0900] "GET /~kazunori/JPro2/ HTTP/1.1" 200 1512 <- http://www.infoseek.co.jp/Titles?qt=%A5%B5%A5%C3%A5%AB%A1%BC%A5%AF%A5%E9%A5%D6%A4%F2%A4%C4%A4%AF%A4%ED%A4%A6%A3%B2+%C1%AA%BC%EA+%A5%D1%A5%B9%A5%EF%A1%BC%A5%C9&sn=21518415&sv=JM&lk=noframes >---------------------------------------------------------------------- これって apache の referer_log ですよね? こういう場合は、もっとデータに特化した正規表現の方が 良いんじゃないでしょうか? 例えばこんなの PAT = Regexp.compile('(\S+) \S+ \S+ \[(\S+ \S+)\]\s"([^"]+)" \S+ \S+ <- (http://([^/]*)((goo\.co\.jp)|(infoseek\.com)|(infoseek\.co\.jp)))/(\S+)') で、さらに、とりあえず scan でマッチさせて返って来た 配列が空かどうかで使うかどうかきめるとか。 あと実際はホスト名や時間あたりは文字範囲が陽に決まってますから 更に詳しく書くと良いのかも知れません。 # それよか最後のカッコの中の解析が面倒なんですよ、 # フォーマットが変るし (^^;;; -- gotoken