Boost logo

Boost Users :

From: llwaeva_at_[hidden]
Date: 2007-03-13 21:50:52


> hi there,
> I am working with a pattern-replace job with boost:regex. For
> convenience, I use replace_all_regex to do that. Here is my code
>
> replace_all_regex( TEXT_TO_BE_REPLACED, regex_exp, format_string,
> format_all );
>
> TEXT_TO_BE_REPLACED is a text containing some patterns like %a, %b
> and %c which will be repalced with a specific string(format_string)
> that is inputed by user. However, the input string (format_string)
> may have some characters related to the regular expression, such
> characters must be escaped before the substitution. The following
> > code is for that purpose
> >
> > replace_all( input, "$", "$$" );
> > replace_all( input, "\\", "\\\\" );
> > replace_all( input, ":", "\\:" );
> > replace_all( input, "?", "\\?" );
>> > replace_all( input, "(", "\\(" );
> > replace_all( input, ")", "\\)" );
> >
> > The substitution works fine sometimes and fails when the input string
> > (format_string) contains character which is not escaped. I just
> > wonder if there is any function defined in boost::regex to escape all
> > SPECIAL characters.

> Use "format_literal" rather than "format_all" and all the characters in the
> format string will be output "as is", and none will be treated as special
> characters.

> John.

I try format_literal, but it reports error while compiling "error C2065:
'format_literal' : undeclared identifier"

I am using the latest version of boost. Microsoft Visual Studio 2005, XP


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