Я пытаюсь захватить HTML-теги с регулярным выражением, чтобы форматировать с использованием методов креветок. У меня это до сих пор:Рельсы и креветка: использование регулярного выражения для форматирования
def format(pdf, string)
regex_string = "\n|" +
"<b>(.*)<\/b>|" +
"<h3>(.*)<\/h3>|" +
"<strong>(.*)<\/strong>|" +
"[^<\n]+"
regex = Regexp.new(regex_string, Regexp::MULTILINE)
tokens = string.gsub("\n", " ").gsub(/<br\s*\/?>/, "\n").scan(regex)
tokens.each do |breaker|
case breaker
when "<b>(.*)<\/b>", "<strong>(.*)<\/strong>"
pdf.text breaker.to_s, :size => 10
when "<h3>(.*)<\/h3>"
pdf.text breaker.to_s, :size => 16
else
pdf.text breaker.to_s, :size => 10, :leading => 1
end
end
end
Я думаю, что мое регулярное выражение неверно, хотя и я не могу понять, что это должно быть. Я получаю довольно странную распечатку массива с помощью этого метода. Любая помощь будет отличной!
UPDATE
Изменение (.*)
к (.*?)
получил правильные теги Rubular, но все выходы, кроме тех, в HTML-теги выше [nil, nil, nil]
в тройках.
Спасибо за предложение. Оказывается, Нокигири был лучше, чем хотел. –
Стреляйте, если бы я знал, что вы открыты для этого, я бы предложил! Не намного лучше разбирается HTML в рельсах. Я обновлю свой ответ, чтобы это отразить. – tyler