The ‘\’ character has one of four different meanings, depending on the context in which you use it and what syntax bits are set (see Syntax Bits). It can: 1) stand for itself, 2) quote the next character, 3) introduce an operator, or 4) do nothing.
[ … ] and [^ … ])) if the syntax bit
RE_BACKSLASH_ESCAPE_IN_LISTS is not set. For example, ‘[\]’
would match ‘\’.
RE_BACKSLASH_ESCAPE_IN_LISTS is set.
RE_BK_PLUS_QM, RE_NO_BK_BRACES, RE_NO_BK_VAR,
RE_NO_BK_PARENS, RE_NO_BK_REF in Syntax Bits. Also:
\b)).
\B)).
\<)).
\>)).
\w)).
\W)).
[[:space:]]
(see The Match-space Operator (\s)).
[^[:space]]
(see The Match-non-space Operator (\S)).
Sometimes
you don’t have to explicitly quote special characters to make
them ordinary. For instance, most characters lose any special meaning
inside a list (see List Operators ([ … ] and [^ … ])). In addition, if the syntax bits
RE_CONTEXT_INVALID_OPS and RE_CONTEXT_INDEP_OPS
aren’t set, then (for historical reasons) the matcher considers special
characters ordinary if they are in contexts where the operations they
represent make no sense; for example, then the match-zero-or-more
operator (represented by ‘*’) matches itself in the regular
expression ‘*foo’ because there is no preceding expression on which
it can operate. It is poor practice, however, to depend on this
behavior; if you want a special character to be ordinary outside a list,
it’s better to always quote it, regardless.