Hello huck, and welcome to the Monastery!
But i still cant understand why the \d* in content2 was not greedy enough to capture all of the '39', instead taking the '9' to be NOT ';' .
Actually, that’s exactly what it did do — at first. But that didn’t lead to a match, because 39; doesn’t match \d*[^;]. So, as Corion says, the regex had to give up the last character and try again, giving 39, which does match. “Greedy” means as greedy as possible while still matching. This is explained in detail in the Camel Book (which I don’t have to hand) in a section called “The Little Engine That /Could(n’t)?/”
Hope that helps,