Boost logo

Boost Users :

From: Lynn Allan (l_d_allan_at_[hidden])
Date: 2007-01-25 13:35:58


ooops ... and thanks for the very prompt help to this regex newbie
... I'm very much at the "trial and error" state of getting regex
statements to work.

Would one of the following be the preferred "assignment"?
reg.assign("(\\<and\\>|\\<can\\>|\\<did\\>|\\<the\\>|\\<in\\>|\\<a\\>)");
or
reg.assign("\\<(and|can|did|the|in|a)\\>");

Both seem to work, but perhaps this regex newbie is missing a better
alternative.

What is the "x modifier"? I looked up the perl explanation, and the
boost::regex documentation, but that seemed related to formatting the
statement itself.

Also, thanks for the time and effort you put into boost::regex ...
development and ongoing support.

"John Maddock" <john_at_[hidden]> wrote in message
news:008501c740a2$e2dc0c60$f0fc0c52_at_fuji...
> Lynn Allan wrote:
>> I want to use boost::regex 1.33.1 and vc7.1 on a WinXp-Sp2 computer
>> to
>> remove common words from a file. I'm encountering a problem which
>> seems related to having two of the common words next to each other.
>>
>> std::string test(" in the beginning god created the heavens and the
>> earth ");
>> boost::regex reg;
>> reg.assign("( and | can | did | the | in | a )");
>> test = boost::regex_replace(test, reg, " ");
>> cout << test << endl;
>>
>> The result is:
>> " the beginning god created heavens the earth "
>>
>> Am I doing something wrong or leaving out a step? Seems like the
>> above
>> ought to work. It catches one of the occurrences of " the " between
>> "
>> created " and " heavens " but not those immediately after the " in
>> "
>> or " and ".
>
> Check your whitespace in the expression: the first match is " in ",
> the
> remaining text then starts "the beginning" which won't match " the "
> etc
> etc.
>
> Did you mean to turn on the x-modifier?
>
> John.


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