找到div中的所有包含元素 - Ruby

问题描述 投票:0回答:2

我有这个字符串:

STRING:

"<div class='break'><div class='name-and-date'><strong>Mr. Talon 
 Williamson - Dec 18,  1:47 PM Eastern</div></strong><div class='note-
 contents'>- wrong</div></div><div class='break'><div class='name-and-
 date'><strong>Mr. Talon Williamson - Dec 18,  1:47 PM Eastern</div>
 </strong><div class='note-contents'>- Wrong again</div></div><div 
 class='break'><div class='name-and-date'><strong>Mr. Talon Williamson 
 - Dec 18,  1:47 PM Eastern</div></strong><div class='note-contents'>- 
 okay what is the matter with you.</div></div><div class='break'><div 
 class='name-and-date'><strong>Mr. Talon Williamson - Dec 18,  1:50 PM 
 Eastern</div></strong><div class='note-contents'>- Bro!</div></div>"

在这个字符串中有一个div,它具有“break”类。我正在尝试删除该div及其包含的所有内容的最后一次出现。

所以从那个字符串我希望它返回:

希望获得此回报:

"<div class='break'><div class='name-and-date'><strong>Mr. Talon 
 Williamson - Dec 18,  1:47 PM Eastern</div></strong><div class='note-
 contents'>- wrong</div></div><div class='break'><div class='name-and-
 date'><strong>Mr. Talon Williamson - Dec 18,  1:47 PM Eastern</div>
 </strong><div class='note-contents'>- Wrong again</div></div><div 
 class='break'><div class='name-and-date'><strong>Mr. Talon Williamson 
 - Dec 18,  1:47 PM Eastern</div></strong><div class='note-contents'>- 
 okay what is the matter with you.</div></div>"

CURRENT ATTEMPT:

compliance_string.scan(/<div class='break'>/).last

但这只是返回div而不是所有包含元素及其内容。

ruby-on-rails ruby
2个回答
5
投票

使用nokogiri gem

require 'nokogiri'

html_doc = Nokogiri::HTML(your_html_string)
html_doc.css('.break:last-child').to_s
=> "<div class=\"break\">\n<div class=\"name-and-date\"><strong>Mr. Talon Williamson - Dec 18,  1:50 PM \n Eastern</strong></div>\n<div class=\"note-contents\">- Bro!</div>\n</div>"

1
投票

试试这个

require 'nokogiri'

str = "<div class='break'><div class='name-and-date'><strong>Mr. Talon 
 Williamson - Dec 18,  1:47 PM Eastern</div></strong><div class='note-
 contents'>- wrong</div></div><div class='break'><div class='name-and-
 date'><strong>Mr. Talon Williamson - Dec 18,  1:47 PM Eastern</div>
 </strong><div class='note-contents'>- Wrong again</div></div><div 
 class='break'><div class='name-and-date'><strong>Mr. Talon Williamson 
 - Dec 18,  1:47 PM Eastern</div></strong><div class='note-contents'>- 
 okay what is the matter with you.</div></div><div class='break'><div 
 class='name-and-date'><strong>Mr. Talon Williamson - Dec 18,  1:50 PM 
 Eastern</div></strong><div class='note-contents'>- Bro!</div></div>"

page = Nokogiri::HTML(str)
last_div = page.xpath("//div[@class='break'][last()]")
puts last_div.to_s
© www.soinside.com 2019 - 2024. All rights reserved.