Boost logo

Boost Users :

From: Anibal Jodorcovsky (anibal_at_[hidden])
Date: 2002-07-27 23:52:43


Hi all,

I have a small problem when trying out a regex that works ok with both
jakarta (java code) and Perl. However, in boost::regex I get an extra space
that's very weird. This is the code:

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

main()
{
    static const boost::regex infileRedirection(
"\\[(.+?)\\s*=\\s*(.+?)\\]" );

    const string input = "[IN_FILE_REDIRECTION = STARTS_3]";

    boost::cmatch what;
    if ( boost::regex_search( input, what, infileRedirection,
boost::regbase::perl ) )
    {
        cerr << "Matched! == input is (" << input << ")" << endl;

        string mySection;
        mySection.assign( what[1].first, what[1].second );

        string newSectionName;
        newSectionName.assign( what[2].first, what[2].second );

        cerr << "mySection is: --" << mySection << "--" << endl;
        cerr << "newSection is: --" << newSectionName << "--" << endl;
    }
    else
    {
        cerr << "Didn't match" << endl;
    }

    return 0;
}

And this is the output:

[anibal_at_anibal ControlFile]$ ./a.out
Matched! == input is ([IN_FILE_REDIRECTION = STARTS_3])
mySection is: --IN_FILE_REDIRECTION--
newSection is: -- STARTS_3--

Please note the extra space in the newSection. That should be STARTS_3 and
not " STARTS_3". Why is it taking that space if the space itself is not in
the () expression?

Any help greatly appreciated,

-Anibal


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