原です。

週末に課題が出るとコメントが沢山つきますね。:-)

確かに要求が曖昧だと私も思うんですけど、さしあたって

search = ["Title-1", "Title-B"]
Patterns = [/^(Title-\d+)$/, /^(Title-[A-Z]+)$/]

def title(line)
  Patterns.each_with_index do |r, i|
    return [i, $1] if r =~ line
  end
  nil
end

a = []
File.foreach('data2.txt') do |line|
  line.strip!
  if x = title(line)
    a[x[0]..-1] = [x[1]]
  elsif search.zip(a).all?{|s, d| s == d}
    puts line
  end
end

ぐらいでどうでしょうか。