Каналы в вашем регулярном выражении интерпретируются как оператор чередования . Ваше регулярное выражение заменит следующие три строки:
"-----------------\n---"
" Example "
"---\n-----------------"
Вы можете решить свою проблему, используя Regexp.escape
, чтобы экранировать строку при использовании ее в регулярном выражении ( ideone ):
puts notes.gsub(Regexp.new(Regexp.escape(example_header) + ".*",
Regexp::MULTILINE),
"")
Вы также можете избежать регулярных выражений и использовать вместо этого обычные строковые методы ( ideone ):
puts notes[0, notes.index(example_header)]