Ruby 如何提取标题标记下的内容?

Ruby 如何提取标题标记下的内容?,ruby,regex,Ruby,Regex,我有这样一个html: <div class="content"> <h1>Title 1</h1> Lorem ipsum 1 <h2>Title 2</h2> Lorem ipsum 2 <h3>Title 3</h3> <b>Lorem ipsum 3</b> <h1>Title 4</h1> Lorem ipsum 4

我有这样一个html:

<div class="content">
  <h1>Title 1</h1>
  Lorem ipsum 1

  <h2>Title 2</h2>
  Lorem ipsum 2

  <h3>Title 3</h3>
  <b>Lorem ipsum 3</b>

  <h1>Title 4</h1>
  Lorem ipsum 4

  <h2>Title 5</h2>
  Lorem ipsum 5
</div>

标题1
同侧眼底1
标题2
同侧视野2
标题3
同侧视野3
标题4
同侧视野4
标题5
同侧视野5
我想提取每个标题下的内容,并将其放入如下数组:

[
  "Lorem ipsum 1",
  "Lorem ipsum 2",
  "<b>Lorem ipsum 3</b>",
  "Lorem ipsum 4",
  "Lorem ipsum 5"
]
[
“Lorem ipsum 1”,
“Lorem ipsum 2”,
“Lorem ipsum 3”,
“Lorem ipsum 4”,
“Lorem ipsum 5”
]
我将如何使用regex和/或ruby实现这一点?我尝试过使用
split
方法,比如
html\u body.split(“>”
),但仍然不知道如何正确执行。使用正则表达式和/或ruby的正确方法是什么?

您可以使用正则表达式

/(?<=<\/h\d>\n).*/gm
/(?您可以使用正则表达式

/(?<=<\/h\d>\n).*/gm

/(?你不应该重新发明轮子。使用Nokogiri比从头开始更可靠

require "nokogiri"

html = <<_
<div class="content">
  <h1>Title 1</h1>
  Lorem ipsum 1

  <h2>Title 2</h2>
  Lorem ipsum 2

  <h3>Title 3</h3>
  <b>Lorem ipsum 3</b>

  <h1>Title 4</h1>
  Lorem ipsum 4

  <h2>Title 5</h2>
  Lorem ipsum 5
</div>
_

Nokogiri::HTML(html)
.css("div")
.children
.reject{|e| e.name =~ /\Ah\d\z/}
.map{|e| e.to_html.strip}.reject(&:empty?)
需要“nokogiri”

html=你不应该重新发明轮子。使用Nokogiri比从头开始更可靠

require "nokogiri"

html = <<_
<div class="content">
  <h1>Title 1</h1>
  Lorem ipsum 1

  <h2>Title 2</h2>
  Lorem ipsum 2

  <h3>Title 3</h3>
  <b>Lorem ipsum 3</b>

  <h1>Title 4</h1>
  Lorem ipsum 4

  <h2>Title 5</h2>
  Lorem ipsum 5
</div>
_

Nokogiri::HTML(html)
.css("div")
.children
.reject{|e| e.name =~ /\Ah\d\z/}
.map{|e| e.to_html.strip}.reject(&:empty?)
需要“nokogiri”

html=使用适当的html解析器-在Ruby-Nokogiri的情况下。使用适当的html解析器-在Ruby-Nokogiri的情况下。太棒了。我刚刚用你的方式尝试过,效果非常好。谢谢sawa!:)你好,Sawa,我在提取多个线体时遇到了一些问题,并在这里发布了一个新问题:你的问题不是关于多条线,而是关于多个节点。太棒了。我只是用你的方式尝试了一下,效果非常好。谢谢Sawa!:)你好,Sawa,我在提取多个线体时遇到了一些问题,并在这里发布了一个新问题:您的问题不是关于多条线,而是关于多个节点。太好了。谢谢你,阿米特:)有没有一种方法可以同时匹配身体中的多个线条?例如:太好了。谢谢你,阿米特:)有没有一种方法可以同时匹配身体中的多个线条?例如: