Кажется, это самая сложная проблема, с которой я когда-либо сталкивался, но, возможно, я делаю ее сложнее, чем нужно. Мне нужно удалить неизвестное количество вложенных элементов, которые могут быть или не быть в начале предложения. Элементы 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