|
Boost Users : |
From: Arno Schäfer (arno.schaefer_at_[hidden])
Date: 2004-11-10 07:31:08
Ben Hutchings <ben.hutchings <at> businesswebsoftware.com> writes:
>
> Arno Schäfer wrote:
> > Hi all,
> >
> > Using "regex_replace(string, pattern, replace_string, flags)" I got some
> > unwished results. I can't find out what flag set I have to use, that the
> > replacement string was taken, as it is.
> <snip>
>
> Post your code.
>
> Ben.
>
Here is my test case:
<snip>
#include <iostream>
#define BOOST_NO_WREGEX
#include "boost/regex.hpp"
using namespace std;
using namespace boost;
int main(int argc, char *argv[], char *envp[])
{
string source_org("My path: '#PATH#'");
regex pattern("#PATH#");
string replace("D:\\temp\\rest");
source_org += " " + source_org;
bool only_first = false;
while ( true )
{
string source(source_org);
regex_constants::match_flag_type flags = regex_constants::match_default;
if ( only_first )
flags |= regex_constants::format_first_only;
string result = regex_replace(source, pattern, replace, flags);
cout << "Pattern \"" << pattern.expression() << "\" in string \""
<< source << "\" should be replaced with \"" << replace << "\"" <<
endl
<< "\"" << result << "\"" << endl << endl;
if ( only_first )
break;
only_first = !only_first;
}
return 0;
}
Ouput:
Pattern "#PATH#" in string "My path: '#PATH#' My path: '#PATH#'" should be
replaced with "D:\temp\rest"
est'"My path: 'D: emp
Pattern "#PATH#" in string "My path: '#PATH#' My path: '#PATH#'" should be
replaced with "D:\temp\rest"
est' My path: '#PATH#'"
Exspected output:
Pattern "#PATH#" in string "My path: '#PATH#' My path: '#PATH#'" should be
replaced with "D:\temp\rest"
"My path: 'D:\temp\rest' My path: 'D:\temp\rest'"
Pattern "#PATH#" in string "My path: '#PATH#' My path: '#PATH#'" should be
replaced with "D:\temp\rest"
"My path: 'D:\temp\rest' My path: '#PATH#'"
<snip>
Arno
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