如何在Nokogiri中进行正则表达式搜索以查找与某个开头相匹配的文本?

bco*_*fer 25 ruby hpricot nokogiri

鉴于:

require 'rubygems'
require 'nokogiri'
value = Nokogiri::HTML.parse(<<-HTML_END)
"<html>
<body>
  <p id='para-1'>A</p>
  <div class='block' id='X1'>
    <h1>Foo</h1>
    <p id='para-2'>B</p>
  </div>
  <p id='para-3'>C</p>
  <h2>Bar</h2>
  <p id='para-4'>D</p>
  <p id='para-5'>E</p>
  <div class='block' id='X2'>
    <p id='para-6'>F</p>
  </div>
</body>
</html>"
HTML_END
Run Code Online (Sandbox Code Playgroud)

我想做一些像我在Hpricot中可以做的事情:

divs = value.search('//div[@id^="para-"]')
Run Code Online (Sandbox Code Playgroud)
  1. 如何在XPath样式中搜索元素的模式?
  2. 我在哪里可以找到帮助我的文档?我没有在rdocs中看到这一点.

小智 70

使用xpath函数starts-with:

value.xpath('//p[starts-with(@id, "para-")]').each { |x| puts x['id'] }
Run Code Online (Sandbox Code Playgroud)

  • 哇,亚伦自己刚回答了! (30认同)
  • Nokogiri和RoR核心团队成员的作者. (7认同)

ins*_*mer 18

divs = value.css('div[id^="para-"]')
Run Code Online (Sandbox Code Playgroud)