解析文本以在 Ruby 1.9.x 中查找 html 标签

Ben*_*Ben 1 ruby string text-parsing

我希望能够在两个标签之间匹配文本,从开始标签开始到结束标签。

假设我在名为“text”的变量中有这个文本块:

some text some text some text some text some text
<some_tag>
  some text some text some text some text some text
</some_tag>
some text some text some text some text some text
Run Code Online (Sandbox Code Playgroud)

我想解析内容 'text' 什么都不做,直到它找到一个开始标签,在这种情况下是 'some_tag',一旦它找到一个开始标签,我希望它捕获所有内容,直到标签关闭。

我一直在玩块和正则表达式大约一个小时,似乎无法找到解决这个问题的好方法。

我很感激任何和所有的指针,谢谢!

the*_*Man 5

您应该使用 HTML 解析器。正则表达式和 HTML 往往会产生不稳定的混合,这会导致大剂量的精神错乱。

使用Nokogiri

require 'nokogiri'

html = <<EOT
some text some text some text some text some text
<p>
  some text some text some text some text some text
</p>
some text some text some text some text some text
EOT

doc = Nokogiri::HTML::DocumentFragment.parse(html)

puts doc.search('p').map { |n| n.inner_text }

>>   some text some text some text some text some text
Run Code Online (Sandbox Code Playgroud)

这是在 HTML 片段中搜索,寻找<p>标签。对于它发现的每一个,它都会提取内部文本。

我正在使用 Nokogiri 的 CSS 模式,通过使用"p". 我可以改用 XPath,但 CSS 被更多人理解。