2

Ruby を使用して、HTML ページのタグを削除したいと考えています。生の HTML があり、['span'、'li'、'div'] などのタグのリストを定義し、順番に実行できる正規表現の配列を作成したいと考えています。

clean_text = raw.gsub(first_regex,' ').gsub(second_regex,' ')...

タグごとに 2 つの正規表現 (開始と終了)。

これをプログラムで行う方法はありますか (つまり、タグ配列から正規表現配列を事前に構築し、流暢なパターンで実行します)?

編集:私は実際に一度に2つの質問をしたことに気づきました.1つ目はタグのリストを正規表現のリストに変換することについて、2つ目は正規表現のリストを流暢に呼び出すことについてです。両方の質問に答えてくれてありがとう。私は次の質問を単一のテーマにしようと思います。

4

2 に答える 2

2

これにより、すべてのタグを削除する単一の正規表現が生成されます。

clean_text = raw.gsub(/<\/?(#{tags.join("|")})>/, '')

ただし、属性を持つタグ (例: <a href="...">) をサポートするように改善する必要があります。現在、単純なタグ (例: <a>) のみが削除されています。

于 2009-09-02T15:29:23.137 に答える
1

build_regexタグを正規表現に変換する方法があると仮定すると、次のようになります。

tags = %w(span div li)
clean_text = tags.inject(raw) {|text, tag| text.gsub build_regex(tag), ' ' }

inject 呼び出しは、各置換の結果をブロックの次の繰り返しに渡し、文字列に対して各 gsub を 1 つずつ実行する効果を与えます。

于 2009-09-02T15:23:50.293 に答える