如何使用Nokogiri将正则表达式与p标签文本相匹配?

时间:2014-12-17 07:21:33

标签: ruby ruby-on-rails-4 nokogiri

我有使用search返回的Nodeset。

我想找到一个<p>标签,其中包含&#34;订单&#34;或&#34; {收入}&#34;或&#34;收入&#34;或者&#34; {收入}每年&#34;,所以我写了一个正则表达式:

/(?i)order+|(\{*income\s*\}*\w*)/

现在我想要一个包含上述文字的<p>标签。如何使用Nokogiri使用正则表达式来完成此操作?

1 个答案:

答案 0 :(得分:3)

如果您已经使用正则表达式进一步搜索NodeSet

re = /(?i)order+|(\{*[Ii]ncome\s*\}*\w*)/
nodes = doc.search(…) # whatever you have already
orders = nodes.select{ |n| n.name=='p' && n.text =~ re }

但是,我会这样做:

orders = doc.xpath('//p[contains(.,"Order") or contains(.,"Income")]')