headline.sub(/ on .*/, “”)
"Most Asian markets recover on hopes for US bailout" == "Most Asian Markets Recover".
"Banks lead Europe stocks higher on US bailout hopes" == "Banks lead Europe stocks higher"
See? The first part is a fact, the second part is a guess. The title of this post is some Ruby code that will fix up the headline for you.
(I think the stock markets are recovering somewhat because that's what happens naturally, and not because of the hopes for a bailout).