解析时在字符串中保留通配符

时间:2013-09-15 11:49:53

标签: ruby parsing

我想查找标题并为其提供id属性。例如,我可能希望将id="my-new-id"添加到<h2><h2 class="class-1 class-2">之类的内容。解析器方法如下所示:

def parse_toc(text)
  p = []
  text.split("\n").each do |line|
    if line.match(/\<h2.*?\>/)
      # need to add id
    end
    p.push line
  end
  return p.join("\n")
end

我无法将通配符作为字符串的一部分。如何在更改字符串周围的字符串时保留字符串中的通配符?

1 个答案:

答案 0 :(得分:1)

请尝试以下操作:

puts '<h2>'.gsub(/<h2/, '\& id="my-new-id"')
# <h2 id="my-new-id">
puts '<h2 class="class-1 class-2">'.gsub(/<h2/, '\& id="my-new-id"')
# <h2 id="my-new-id" class="class-1 class-2">
BTW,使用正则表达式解析/修改html / xml是个坏主意。请参阅this answer