2010-01-20 43 views
0

這似乎是我迄今爲止最困難的問題,但也許我會讓它比需要的更難。我需要刪除可能或可能不在句子開頭的未知數量的嵌套元素。 span元素在圓括號中包含許多單詞。所以在句子中:在紅寶石中使用正則表達式去除Nokogiri元素

(密碼學,俚語)一個互聯網防火牆。

(密碼,俚語)看起來是這樣的:

<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 
+0

我認爲你應該嘗試更好地解釋你試圖達到的目標,而不是立即建議該方法。我理解你的問題,因爲你有一個帶子括號的字符串,並且你想把它和所有封閉的SPAN一起刪除。 –

回答

1

不是100%確定你想要做什麼,但上面的代碼可以刪除的變量數跨度,如果你只是離開關閉指數:

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