From: fukumit Date: 2002-03-10T22:26:17+09:00 Subject: [ruby-list:34293] Re: 簡易検索エンジンにキーワードハイライト機能を持たせる あづみ さま 回答ありがとうございました。 無事解決いたしました。 > > キーワードがタグの要素の一部であった場合には > > タグを「破壊」しないよう、以下のスクリプトを書いてみたのですが、 > > 正しく動きません。 > どういうパターンでどう意図しているのにどういう結果が返ってきて > 正しく動いてないと判断しているのか分からないのですが、 たしかに、「正しく動いていない」では伝わりませんね。 (幸いに、意図は読みとっていただけているようです)。 ------------------------------------------------------ たとえば、 img タグの alt 属性にキーワード「画像」が含まれていた場合、 <B>画像</B> ではなく 画像 なるようにしたかったのですが、 本来ハイライト表示してほしいところ(タグの要素でないところ)まで ハイライトしなくなってしまいました。 原因は正規表現の書き方にあるのでしょうか? あるいはほかの原因なのでしょうか? ------------------------------------------------------ ……ぐらいは書くべきでしたね。 > if line =~ /<[^>]*?#{markup}.*?>/ # タグの要素の場合は > > にすれば良いんじゃないでしょうか。 望んでいたものはこれです。 > 後は、#{markup} の部分は > #{Regexp::escape(markup)} にした方が良いような気がします。 これは、「望んでいた以上のもの」です。 > if line =~ /#{keyword}/ then > line = line.gsub(/(?:(<.*?>)|(#{keyword}))/){ $1||"#{$2}" } > end 勉強になります。 ありがとうございました。 -- Hidenobu Fukumitsu