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 回答