これはパーサーを使用して、それを行う方法の簡単な例です:
require 'nokogiri'
html = '<p>lorem ipsum blah blah ipsum</p>
<!--start-->
REPLACE MULTI-LINE
CONTENT HERE...
<!--end-->
<p>other stuff still here...</p>'
doc = Nokogiri.HTML(html)
puts doc.to_html
我々が得る解析した後:コメントを見つけ、次text()
のノードにステッピングと交換した後
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> REPLACE MULTI-LINE
# >> CONTENT HERE...
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
doc.at('//comment()/following-sibling::text()').content = "\nhello world!\n"
puts doc.to_html
それ:
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> hello world!
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
あなたのHTMLが常にポジションなしでシンプルになるあなたの検索パターンを壊す文字列を持つ可能性があるなら、検索/置換することができます。
あなたがチェックしてみると、些細でないHTML操作では、パーサーを使うべきです。これは、ドキュメントの実際の構造を処理するためです。したがって、ドキュメントが変更された場合、パーサーが混乱しないようにすることができます。
テンプレートファイルを使用してHTMLコンテンツを生成する場合は、ERBまたは[HAML](http://haml-lang.com/)のいずれかを調べるとよいでしょう。個人的には、私はHAMLを好きなHTMLの略語として好む。別のコンテンツをボイラープレートに挿入する必要がある場合は、検索/置換よりも優れたソリューションになります。 –