Boost logo

Boost :

Subject: Re: [boost] [Regex] Why doesn't this pattern match?
From: Celtic Minstrel (celtic.minstrel.ca_at_[hidden])
Date: 2009-12-14 21:46:02


On Tue, Dec 8, 2009 at 6:07 AM, Vitalij Gotovskij
<Vitalij.gotovskij_at_[hidden]> wrote:
> Didn't knew regex engine is working in that way... If he understands "\\\\n" as C++ "\\n"
> and "\\n" as C++ understands "\n", then how regex engine understands "\n" ...?
It's nothing to do with how the regex engine works; it's the fact that
backslashes are interpreted as escape sequences in C++ as well as in
Regex. So, if you include "\\\\n" as a regex in your C++ source, the
regex engine is actually passed "\\n"; if you were to read the regex
pattern from a file or the console, you'd use "\\n" rather than
"\\\\n" for the effect you want.

Similarly, if you include "\\n" as a regex in your C++ source, the
regex engine actually sees "\n" and hence matches a newline. If you
read the regex pattern from a file or the console, you'd need to enter
"\n" rather than "\\n".

And finally, if you include "\n" as a regex in your C++ source, the
regex engine actually sees a newline character rather than the escape
sequence "\n". I'm not really sure if it will then match a newline
character; I would assume so, though.

On Tue, Dec 8, 2009 at 6:10 AM, Sylvester-Bradley, Gareth
<Gareth.Sylvester-Bradley_at_[hidden]> wrote:
> If you want to match a '\' followed by an 'n' (as I think the OP needs),
> do you need a regex of "\\\\n" (or "\\Q\\n\\E")?

Indeed. After compilation, "\\\\n" becomes "\\n", which matches '\'
followed by 'n'.

--CM


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk