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

dod*_*747 2 html ruby regex ruby-on-rails 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>
Run Code Online (Sandbox Code Playgroud)

我想提取整个图像标签, <img src="example.jpg"/>.

我发现这个正则表达式只提取图像的位置:

content_to_extract_from[/img.*?src="(.*?)"/i,1]
Run Code Online (Sandbox Code Playgroud)

生产,"example.jpg".

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

提前谢谢,安迪

Fre*_*ung 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\">"] 
Run Code Online (Sandbox Code Playgroud)