0

我想找到标题并给它们一个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

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

4

1 回答 1

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">

顺便说一句,使用正则表达式来解析/修改 html/xml 是一个坏主意。看到这个答案

于 2013-09-15T11:59:33.690 回答