提取所有的html图像标记,Rails

时间:2012-09-21 10:03:17

标签: html ruby-on-rails ruby regex image

下午所有,

我正在尝试编写一个脚本,通过其<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”。

有没有人知道会捕获标签的正则表达式呢?

提前谢谢,安迪

1 个答案:

答案 0 :(得分: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\">"]