将一串html,切碎并将每个部分放入数组中的最佳方法是什么?

时间:2011-10-25 08:01:59

标签: ruby regex arrays text-processing

我对如何做到这一点有一个大概的想法,但无法确定如何完成它。我相信它可以用某种正则表达式来完成。想知道这里是否有人可以指出我正确的方向。

如果我有一串html,比如这个

some_html = '<div><b>This is some BOLD text</b></div>'

我想将它划分为逻辑片段,然后将这些片段放入一个数组中,这样我就会得到这样的结果

html_array = ["<div>", "<b>", "This is some BOLD text", "</b>","</div>" ]

3 个答案:

答案 0 :(得分:5)

我没有使用正则表达式,而是使用nokogiri gem(用于解析由Aaron Patterson编写的html的gem - Rails和Ruby的贡献者)。以下是如何使用它的示例:

html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>")

然后,您可以致电html_doc.children获取nodeset并从那里开始工作

html_doc.children  # returns a nodeset

答案 1 :(得分:4)

使用HTML解析器,例如Nokogiri。使用SAX,您可以在触发事件时向数组添加标记/元素。

尝试使用正则表达式HTML是not a good idea,除非您计划仅处理其中一小部分HTML。

答案 2 :(得分:0)

some_html.split(/(<[^>]*>)/).reject{|x| '' == x}