【问题标题】:Nokogiri Element Removal Using Regex in Ruby在 Ruby 中使用正则表达式去除 Nokogiri 元素
【发布时间】: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 一起删除。

标签: ruby regex nokogiri


【解决方案1】:

不是 100% 确定您要做什么,但是如果您不使用索引,上面的代码可以删除可变数量的跨度:

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

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 2013-08-02
    • 2013-08-14
    • 2013-02-08
    • 2018-07-14
    • 2015-12-07
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多