У меня есть текстовый блоб, и я хотел бы выбрать URL-адреса в зависимости от того, имеют ли они .png или .jpg.Я хотел бы выбрать все слово на основе шаблона.
Например, в этом BLOB-объекте:
width='17'></a> <a href='http://click.e.groupon.com/? qs=94bee0ddf93da5b3903921bfbe17116f859915d3a978c042430abbcd51be55d8df40eceba3b1c44e' style=\"text-decoration: none;\">\n<img alt='Facebook' border='0' height='18' src='http://s3.grouponcdn.com/email/images/gw-email/facebook.jpg' style='display: i
Я хочу выбрать изображение:
http://s3.grouponcdn.com/email/images/gw-email/facebook.jpg
Могу ли я использовать нокогири для html-текста?
Использование Nokogiri и XPath:
frag = Nokogiri::HTML.fragment(str) # Don't construct an entire HTML document images = frag.xpath('.//img/@src').map(&:text).grep /\.(png|jpg|jpeg)\z/
XPath говорит:
.//
img
<img>
/@src
src
Тогда мы:
map(&:text)
Nokogiri::XML::Attr
grep
Да, вы можете использовать nokogiri, и вы должны!
Вот простой фрагмент:
require "nokogiri" str = "....your blob" html_doc = Nokogiri::HTML(str) html_doc.css("a").collect{|e| e.attributes["href"].value}.select{|e| e.index(".png") || e.index(".jpeg") }
Если вы хотите найти только URL, заканчивающиеся на .jpg или .png, шаблон, подобный этому, должен это сделать.
https?:\/\/.*?\.(?:jpg|png)