Boost logo

Boost Users :

From: Chandan Nilange (chandan_nilange_at_[hidden])
Date: 2007-08-31 12:47:46


Hello,
   
  As per PCRE /m modifier $ will match the pattern before any newline.
  However boost_regex gives back matches before formfeed(\x0c) & CarriagReturn(\x0d)
  Same is observed for ^ i.e match after newline.
   
  Please could anybody let me know what is the right pcre behaviour?
  I have attached the example for demonstration of the case, using boost_regex
   
  Regards,
  Chandan
   

       
---------------------------------
Park yourself in front of a world of choices in alternative vehicles.
Visit the Yahoo! Auto Green Center.

#include <iostream>
#include <string>
#include "/home/ChandanNilange/work/boost/boost_1_34_0/boost/regex.hpp" // Boost.Regex lib

using namespace std;

int main( ) {

  std::string s,sre;

  //regular expression
  sre="\x30$";

  //Matching string
  s="\x01\x30\x02\x31\x03\x32\x04\x33\x05\x34\x06\x35\x07\x36\x08\x37\x09\x30\x0a\x39\x0b\x30\x0c\x30\x0d\x3c\x0e\x3d\x0f";
  
  boost::regex re;
  re.assign(sre, boost::regex_constants::perl);
  std::string::const_iterator start, end;
  start = s.begin();
  end = s.end();
  boost::sregex_iterator it(start, end, re);
  boost::sregex_iterator it_end;

  for( ; it != it_end; it++)
    {
      cout << "Found Pattern:start:" << std::string((*it)[0].first, (*it)[0].second) << ":end:\n"
           << "Pattern starts at :" << (*it)[0].first - s.begin()
           << "\nPattern ends at: " << ((*it)[0].second - 1) - s.begin()
           << "\nPattern length:" << (*it)[0].length() << endl;
    }

}

/**************************
Results:
Found Pattern:start:0:end:
Pattern starts at :17
Pattern ends at: 17
Pattern length:1
Found Pattern:start:0:end:
Pattern starts at :21
Pattern ends at: 21
Pattern length:1
Found Pattern:start:0:end:
Pattern starts at :23
Pattern ends at: 23
Pattern length:1
****************************/



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