Я пытаюсь проанализировать строку HTML с помощью ruby, эта строка содержит несколько тегов
, мне нужно найти и закодировать все скобки <
и >
между каждым из этих элементов.
<code>Example:
string_1_pre = "<pre><h1>Welcome</h1>
"string_2_pre ="
<h1>Welcome</h1>
<h1>Goodbye</h1>
"def clean_pre_code (html_string) matched = html_string.match (/ (? <= <pre>).*(?=<\/pre>)/)
cleaned = matched.to_s.gsub(/[<]/, "<").gsub(/[>]/, ">")
html_string.gsub(/(?<=<pre>).*(?=<\/pre>)/, cleaned)
end
clean_pre_code(string_1_pre) #=> "<pre><h1>Welcome</h1>" clean_pre_code (string_2_pre) # => "
<h1>Welcome</h1></pre><pre><h1>Goodbye</h1>
"
Это работает до тех пор, пока html_string
содержит только один элемент
, но не при наличии нескольких.
Я был бы открыт для решения, которое использует Nokogiri или подобное,но не могу понять, как заставить его делать то, что я хочу.
Пожалуйста, дайте мне знать, если вам нужен какой-либо дополнительный контекст.
Обновление: это возможно только с Нокогири, см. принятый ответ.