sed: BRE vs ERE

 
 5.2 Basic (BRE) and extended (ERE) regular expression
 =====================================================
 
 Basic and extended regular expressions are two variations on the syntax
 of the specified pattern.  Basic Regular Expression (BRE) syntax is the
 default in 'sed' (and similarly in 'grep').  Use the POSIX-specified
 '-E' option ('-r', '--regexp-extended') to enable Extended Regular
 Expression (ERE) syntax.
 
    In GNU 'sed', the only difference between basic and extended regular
 expressions is in the behavior of a few special characters: '?', '+',
 parentheses, braces ('{}'), and '|'.
 
    With basic (BRE) syntax, these characters do not have special meaning
 unless prefixed with a backslash ('\'); While with extended (ERE) syntax
 it is reversed: these characters are special unless they are prefixed
 with backslash ('\').
 
 Desired pattern      Basic (BRE) Syntax         Extended (ERE) Syntax
                                                 
 --------------------------------------------------------------------------
 literal '+' (plus         $ echo 'a+b=c' > foo       $ echo 'a+b=c' > foo
 sign)                     $ sed -n '/a+b/p' foo      $ sed -E -n '/a\+b/p' foo
                           a+b=c                      a+b=c
                                                 
 One or more 'a'           $ echo aab > foo           $ echo aab > foo
 characters                $ sed -n '/a\+b/p' foo     $ sed -E -n '/a+b/p' foo
 followed by 'b'           aab                        aab
 (plus sign as                                   
 special
 meta-character)