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 に答える