elisp: Regexp Backslash

 
 33.3.1.3 Backslash Constructs in Regular Expressions
 ....................................................
 
 For the most part, ‘\’ followed by any character matches only that
 character.  However, there are several exceptions: certain sequences
 starting with ‘\’ that have special meanings.  Here is a table of the
 special ‘\’ constructs.
 
 ‘\|’
      specifies an alternative.  Two regular expressions A and B with
      ‘\|’ in between form an expression that matches anything that
      either A or B matches.
 
      Thus, ‘foo\|bar’ matches either ‘foo’ or ‘bar’ but no other string.
 
      ‘\|’ applies to the largest possible surrounding expressions.  Only
      a surrounding ‘\( ... \)’ grouping can limit the grouping power of
      ‘\|’.
 
      If you need full backtracking capability to handle multiple uses of
      ‘\|’, use the POSIX regular expression functions (SeePOSIX
      Regexps).
 
 ‘\{M\}’
      is a postfix operator that repeats the previous pattern exactly M
      times.  Thus, ‘x\{5\}’ matches the string ‘xxxxx’ and nothing else.
      ‘c[ad]\{3\}r’ matches string such as ‘caaar’, ‘cdddr’, ‘cadar’, and
      so on.
 
 ‘\{M,N\}’
      is a more general postfix operator that specifies repetition with a
      minimum of M repeats and a maximum of N repeats.  If M is omitted,
      the minimum is 0; if N is omitted, there is no maximum.
 
      For example, ‘c[ad]\{1,2\}r’ matches the strings ‘car’, ‘cdr’,
      ‘caar’, ‘cadr’, ‘cdar’, and ‘cddr’, and nothing else.
      ‘\{0,1\}’ or ‘\{,1\}’ is equivalent to ‘?’.
      ‘\{0,\}’ or ‘\{,\}’ is equivalent to ‘*’.
      ‘\{1,\}’ is equivalent to ‘+’.
 
 ‘\( ... \)’
      is a grouping construct that serves three purposes:
 
        1. To enclose a set of ‘\|’ alternatives for other operations.
           Thus, the regular expression ‘\(foo\|bar\)x’ matches either
           ‘foox’ or ‘barx’.
 
        2. To enclose a complicated expression for the postfix operators
           ‘*’, ‘+’ and ‘?’ to operate on.  Thus, ‘ba\(na\)*’ matches
           ‘ba’, ‘bana’, ‘banana’, ‘bananana’, etc., with any number
           (zero or more) of ‘na’ strings.
 
        3. To record a matched substring for future reference with
           ‘\DIGIT’ (see below).
 
      This last application is not a consequence of the idea of a
      parenthetical grouping; it is a separate feature that was assigned
      as a second meaning to the same ‘\( ... \)’ construct because, in
      practice, there was usually no conflict between the two meanings.
      But occasionally there is a conflict, and that led to the
      introduction of shy groups.
 
 ‘\(?: ... \)’
      is the “shy group” construct.  A shy group serves the first two
      purposes of an ordinary group (controlling the nesting of other
      operators), but it does not get a number, so you cannot refer back
      to its value with ‘\DIGIT’.  Shy groups are particularly useful for
      mechanically-constructed regular expressions, because they can be
      added automatically without altering the numbering of ordinary,
      non-shy groups.
 
      Shy groups are also called “non-capturing” or “unnumbered groups”.
 
 ‘\(?NUM: ... \)’
      is the “explicitly numbered group” construct.  Normal groups get
      their number implicitly, based on their position, which can be
      inconvenient.  This construct allows you to force a particular
      group number.  There is no particular restriction on the numbering,
      e.g., you can have several groups with the same number in which
      case the last one to match (i.e., the rightmost match) will win.
      Implicitly numbered groups always get the smallest integer larger
      than the one of any previous group.
 
 ‘\DIGIT’
      matches the same text that matched the DIGITth occurrence of a
      grouping (‘\( ... \)’) construct.
 
      In other words, after the end of a group, the matcher remembers the
      beginning and end of the text matched by that group.  Later on in
      the regular expression you can use ‘\’ followed by DIGIT to match
      that same text, whatever it may have been.
 
      The strings matching the first nine grouping constructs appearing
      in the entire regular expression passed to a search or matching
      function are assigned numbers 1 through 9 in the order that the
      open parentheses appear in the regular expression.  So you can use
      ‘\1’ through ‘\9’ to refer to the text matched by the corresponding
      grouping constructs.
 
      For example, ‘\(.*\)\1’ matches any newline-free string that is
      composed of two identical halves.  The ‘\(.*\)’ matches the first
      half, which may be anything, but the ‘\1’ that follows must match
      the same exact text.
 
      If a ‘\( ... \)’ construct matches more than once (which can
      happen, for instance, if it is followed by ‘*’), only the last
      match is recorded.
 
      If a particular grouping construct in the regular expression was
      never matched—for instance, if it appears inside of an alternative
      that wasn’t used, or inside of a repetition that repeated zero
      times—then the corresponding ‘\DIGIT’ construct never matches
      anything.  To use an artificial example, ‘\(foo\(b*\)\|lose\)\2’
      cannot match ‘lose’: the second alternative inside the larger group
      matches it, but then ‘\2’ is undefined and can’t match anything.
      But it can match ‘foobb’, because the first alternative matches
      ‘foob’ and ‘\2’ matches ‘b’.
 
 ‘\w’
      matches any word-constituent character.  The editor syntax table
      determines which characters these are.  SeeSyntax Tables.
 
 ‘\W’
      matches any character that is not a word constituent.
 
 ‘\sCODE’
      matches any character whose syntax is CODE.  Here CODE is a
      character that represents a syntax code: thus, ‘w’ for word
      constituent, ‘-’ for whitespace, ‘(’ for open parenthesis, etc.  To
      represent whitespace syntax, use either ‘-’ or a space character.
      SeeSyntax Class Table, for a list of syntax codes and the
      characters that stand for them.
 
 ‘\SCODE’
      matches any character whose syntax is not CODE.
 
 ‘\cC’
      matches any character whose category is C.  Here C is a character
      that represents a category: thus, ‘c’ for Chinese characters or ‘g’
      for Greek characters in the standard category table.  You can see
      the list of all the currently defined categories with ‘M-x
      describe-categories <RET>’.  You can also define your own
      categories in addition to the standard ones using the
      ‘define-category’ function (SeeCategories).
 
 ‘\CC’
      matches any character whose category is not C.
 
    The following regular expression constructs match the empty
 string—that is, they don’t use up any characters—but whether they match
 depends on the context.  For all, the beginning and end of the
 accessible portion of the buffer are treated as if they were the actual
 beginning and end of the buffer.
 
 ‘\`’
      matches the empty string, but only at the beginning of the buffer
      or string being matched against.
 
 ‘\'’
      matches the empty string, but only at the end of the buffer or
      string being matched against.
 
 ‘\=’
      matches the empty string, but only at point.  (This construct is
      not defined when matching against a string.)
 
 ‘\b’
      matches the empty string, but only at the beginning or end of a
      word.  Thus, ‘\bfoo\b’ matches any occurrence of ‘foo’ as a
      separate word.  ‘\bballs?\b’ matches ‘ball’ or ‘balls’ as a
      separate word.
 
      ‘\b’ matches at the beginning or end of the buffer (or string)
      regardless of what text appears next to it.
 
 ‘\B’
      matches the empty string, but _not_ at the beginning or end of a
      word, nor at the beginning or end of the buffer (or string).
 
 ‘\<’
      matches the empty string, but only at the beginning of a word.
      ‘\<’ matches at the beginning of the buffer (or string) only if a
      word-constituent character follows.
 
 ‘\>’
      matches the empty string, but only at the end of a word.  ‘\>’
      matches at the end of the buffer (or string) only if the contents
      end with a word-constituent character.
 
 ‘\_<’
      matches the empty string, but only at the beginning of a symbol.  A
      symbol is a sequence of one or more word or symbol constituent
      characters.  ‘\_<’ matches at the beginning of the buffer (or
      string) only if a symbol-constituent character follows.
 
 ‘\_>’
      matches the empty string, but only at the end of a symbol.  ‘\_>’
      matches at the end of the buffer (or string) only if the contents
      end with a symbol-constituent character.
 
    Not every string is a valid regular expression.  For example, a
 string that ends inside a character alternative without a terminating
 ‘]’ is invalid, and so is a string that ends with a single ‘\’.  If an
 invalid regular expression is passed to any of the search functions, an
 ‘invalid-regexp’ error is signaled.