Boost logo

Boost Users :

From: markus_schoepflin (markus.schoepflin_at_[hidden])
Date: 2001-12-13 04:39:52


Hi all,

I'm trying to match strings of the form "a&b&c&d" with the following
expression: "(?:([^&]+)&)*([^&]+)". This nicely matches the whole
string but instead of giving me the submatches "a", "b", "c" and "d"
I just get "c" and "d". Could anyone tell me what I'm doing wrong?

Sample code, tested with MSVC6SP5 and Boost 1.26.0:

#include <boost/regex.hpp>
#include <string>
#include <iostream>

void main(void)
{
  const char *input ="a&b&c&d";
  const boost::regex syntax("(?:([^&]+)&)*([^&]+)");
  boost::cmatch matches;

  if(boost::regex_match(input, matches, syntax))
  {
    for (boost::cmatch::size_type i = 0; i < matches.size(); ++i)
      std::cout << static_cast<std::string>(matches[i]) << '\n';
  }
}

Tia, Markus


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