我正在尝试使用 prawn 的方法获取带有正则表达式的 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
我认为我的正则表达式是错误的,我无法弄清楚它应该是什么。我用这种方法得到了一个相当奇怪的数组打印输出。任何帮助都会很棒!
更新
更改(.*)
为(.*?)
在 Rubular 中获取正确的标签,但除了上面的 HTML 标签中的输出之外的所有输出都是三个[nil, nil, nil]
。