下午所有,
我正在尝试编写一个脚本,通过其<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”。
有没有人知道会捕获标签的正则表达式呢?
提前谢谢,安迪
答案 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\">"]