OK, I didn't read the documentation carrefully... (sorry) But I still don't understand how to do what I want with boost regex. It's simple : I have a string and a regular expression. I only want to find the FIRST sub-string which matches my regular expression (S), then to extract the sub-string before S and the sub-string after S. An example : my string : "2001 2002 something" my regexp : 200\d Nevermind what regex matches first (either 2001, or 2002). Let's suppose it matches "2002". I want to create three strings "2001 ", "2002" and finally " something". That's all, except that I need to do that as QUICK as possible (that's why I'm testing another library). I have another pb. I'm using MFC and CString objects. I didn't see a way of catching the substrings without using a temporary std::string object (it's not very efficient because it creates a std::string object, then I need to call a cast operator to get a char*, then it creates my CString object from the char*...) Can you give me some clues ? Thanks a lot. Fred **************************************************************************** *** MY CODE (which works fine when the entire string sText is matched) : ------------------ oRegExp->RegExp = new boost::regex((LPCSTR) sRegExp); ------------------ if (regex_match((LPCSTR) sText, oResults, *oRegExp->RegExp)) { if (oResults[-1].length() > 0) temp = std::string(oResults[-1].first, oResults[-1].second); temp = std::string(oResults[0].first, oResults[0].second); if (oResults[-2].length() > 0) temp = std::string(oResults[-2].first, oResults[-2].second); }