Boost logo

Boost Users :

Subject: [Boost-users] boost.regex and perl expressions
From: Dmitriy Lyfar (dlyfar_at_[hidden])
Date: 2009-05-07 07:10:41


Hello,

I'm trying to port my old regex code from pcre to boost.regex. There is a
sample:

void print_captures(const std::string& regx, const std::string& text)
{
   boost::regex e(regx, boost::regex::perl);
   boost::smatch what;
   std::cout << "Expression: \"" << regx << "\"\n";
   std::cout << "Text: \"" << text << "\"\n";
   if(boost::regex_search(text, what, e, boost::match_extra))
   {
      unsigned i, j;
      for(i = 0; i < what.size(); ++i)
         std::cout << " $" << i << " = \"" << what[i] << "\"\n";
   }
   else
   {
      std::cout << "** No Match found **\n";
   }
}

int main(int , char* [])
{
   print_captures("http:\\/\\/.*\\.(.*\\.cn)", "\n\nhttp://
www.sc500.cn/hi/mom! \
                              \n test http:// rdfhr.zeyulariy.cn \
                              \n test http:// adtgr.zeytlariy.cn \n \
                              http://super.test.com");
   return 0;
}

boost::regex output is:
$0 = "http://www.sc500.cn/hi/mom!
 test http:// rdfhr.zeyulariy.cn
 test http:// adtgr.zeytlariy.cn"
$1 = "zeytlariy.cn"

Whereas where I'm using pcre I got following substrings (except full match):
sc500.cn
zeytlariy.cn
zeyulariy.cn

which is expected. So I'm confused about how perl expressions are worked.
How can I get the same results using boost instead of pcre?
Thank you.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net