Ruby中使用Regex去除Nokogiri元素

Ruby中使用Regex去除Nokogiri元素,ruby,regex,nokogiri,Ruby,Regex,Nokogiri,这似乎是我遇到过的最难的问题,但也许我正在使它变得比需要的更难。我需要删除未知数量的嵌套元素,这些元素可能在句子开头,也可能不在句子开头。span元素在括号中包含许多单词。因此,在这句话中: (密码学,俚语)互联网防火墙 (密码学,俚语)看起来像这样: <span class="ib-brac"><span class="qualifier-brac">(</span></span><span class="ib-content">&l

这似乎是我遇到过的最难的问题,但也许我正在使它变得比需要的更难。我需要删除未知数量的嵌套元素,这些元素可能在句子开头,也可能不在句子开头。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>
(密码学,)
我在想一个好的解决方案是使用regex和nokogiri检查第一个“(”是否存在,如果存在,则删除所有跨距,直到达到“结束”),但我不知道如何做到这一点。我现在使用的解决方案没有考虑可变的跨距数:

if definition.inner_html =~ /^<span class/
  definition.search("span")[0..4].each do |span|
    span.remove
  end  
end

if definition.internal\u html=~/^无法100%确定您要执行的操作,但是如果您不使用索引,上面的代码可以删除可变数量的跨距:

if definition.inner_html =~ /^<span class/
  definition.search("span").each do |span|
    span.remove
  end
end  

if definition.internal\u html=~/^我认为你应该试着更好地解释你想要实现的目标,而不是立即提出方法。我理解您的问题,因为您有一个在括号中带有子字符串的字符串,您希望删除它以及所有封闭的跨距。