【发布时间】:2010-01-20 09:54:32
【问题描述】:
这似乎是我遇到的最困难的问题,但也许我让它变得比需要的更难。我需要删除未知数量的嵌套元素,这些元素可能位于句首,也可能不在句首。 span 元素在括号中包含许多单词。所以在句子中:
(密码学,俚语)互联网防火墙。
(密码学,俚语)看起来像这样:
<span class="ib-brac"><span class="qualifier-brac">(</span></span><span class="ib-content"><span class="qualifier-content">cryptography<span class="ib-comma"><span class="qualifier-comma">,</span></span> <a href="/wiki/Appendix:Glossary#slang" title="Appendix:Glossary">slang</a></span></span><span class="ib-brac"><span class="qualifier-brac">)</span></span>
我在想一个好的解决方案是使用正则表达式和 nokogiri 来检查第一个 '(' 是否存在,如果存在,则删除所有跨度,直到达到关闭 ')',但我不知道这个怎么做。我现在使用的解决方案不考虑可变数量的跨度:
if definition.inner_html =~ /^<span class/
definition.search("span")[0..4].each do |span|
span.remove
end
end
【问题讨论】:
-
我认为您应该尝试更好地解释您想要实现的目标,而不是立即建议方法。我理解您的问题,因为您有一个带有括号中的子字符串的字符串,并且您想将其连同所有封闭的 SPAN 一起删除。