给出一个 @meta 包含一些HTML片段作为字符串的变量:
@meta
@meta = <<-HTML <meta name="foo" content="content1"> <meta name="bar" content="content2"> <meta content="2019/01/10 09:59:59 +0900" name="r_end"> HTML
您可以使用 引入nokogiri 解析它:
require 'nokogiri' doc = Nokogiri::HTML::DocumentFragment.parse(@meta) doc.at_css('meta[name="r_end"]')['content'] #=> "2019/01/10 09:59:59 +0900"
at_css 返回与给定CSS选择器匹配的第一个元素 [] 返回给定属性的值。
at_css
[]
如何使用简单的正则表达式来捕获值 的 String#scan 强> 。
String#scan
仅当metatag的名称未更改时,此方法才有效
@meta = "\n <meta content=\content1\">\n <meta content=\content2\">\n <meta content='content2\">\n ....... <meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">\n \n" @meta.scan(/content=\"(.*)\" name=\"r_end\"/) #=> [["2019/01/10 09:59:59 +0900"]]
说明:
上面的代码将捕获的值 content 与metatag name="r_end"
content
name="r_end"
如果您认为可能存在其他一些HTML元素 name="r_end" 您可能需要在正则表达式中添加一些其他标识符