2

午後全部、

<img src=""/>タグを介して記事から最初の画像を抽出するスクリプトを作成しようとしています。したがって、記事に次のようなものがある場合:

<p>Lorem ipsum dolor sit amet, labore et dolore magna aliqua.<img src="example.jpg"/> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>

画像タグ全体を抽出したいのですが、<img src="example.jpg"/>.

画像の場所だけを抽出するこの正規表現を見つけました:

content_to_extract_from[/img.*?src="(.*?)"/i,1]

「example.jpg」を生成します。

タグもキャプチャする正規表現を知っている人はいますか?

よろしくお願いします、アンディ

4

1 に答える 1

10

正規表現を使用してマークアップを解析すると、問題が発生します。あなたはおそらくほとんどうまくいくが、あなたが予測していなかった場合には壊れてしまう何かを書くことができます。たとえば、正規表現では処理されない二重引用符ではなく、一重引用符で属性を囲むことができます。

はるかに信頼できるのは、nokogiriなどの実際のパーサーを使用することです。

html = Nokogiri::HTML.fragment('<p>Lorem ipsum dolor sit amet, labore et dolore magna aliqua.<img src="example.jpg"/> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>')
html.css('img').collect(&:to_s) #=> ["<img src=\"example.jpg\">"] 
于 2012-09-21T10:18:30.680 に答える