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
> 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
> 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'.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk