There's no need to use regular expressions for this, especially not boost (I still consider it a horrible, horrible dependency due to it's size alone). Since the separators are fixed and always the same characters (line breaks and colons) there's no real need to use any regular expressions engine.
Instead, use strtok() or one of the related functions (e.g. the wide char version; keep in mind that this function has its own downsides and problems, depending on the actual usage, e.g. it might not be threadsafe).
First step, you'd use it to split the header into single lines. Once you receive an empty line, you'll know that the header is over.
Then, to read your header line, you'll split it at the :, which will get you both a key as well as a value.
As an alternative, you can as well use std::string and the member function find_first_of() to look for the correct positions. The rest of the strategy would be the same.